不亂用佔位符java
也能夠是 雙引號#include<stdio.h>
#include<stdlib.h>
/**
java new對象就會申請一塊堆內存
c malloc memory allocation 內存分配
c的堆內存 程序員手動申請手動釋放 malloc
free
申請一塊堆內存 動態內存分配
堆內存 不連續的
堆內存大小不固定 取決機器的狀態
*/
main(){
//malloc 接收的參數 申請內存大小 返回一個內存地址值 申請到的也是一塊連續的內存空間
int* pointer = malloc(sizeof(int)*5);
*(pointer+0) = 1;
*(pointer+1) = 2;
*(pointer+2) = 3;
*(pointer+3) = 4;
*(pointer+4) = 5;
//C for 循環 循環的臨時變量i 要先聲明再使用
int i;
for(i = 0;i<5;i++){
printf("第%d個元素的值= %d\n",i,*(pointer+i));
}
free(pointer);
printf("第一個元素的值%d\n",*(pointer+0));
system("pause");
}
複製代碼
擴展內存 程序員
#include<stdio.h>
#include<stdlib.h>
/**
保存班級人數
申請一塊堆內存保存學生的學號
來了幾個插班生
擴展一下堆內存
保存插班生的學號
realloc re-
*/
main(){
printf("請輸入班級的人數:");
int count;
scanf("%d",&count);
//申請一塊堆內存
int* pointer = malloc(sizeof(int)*count);
int i;
for(i = 0;i<count;i++){
printf("請輸入第%d個學生的學號:",i+1);
scanf("%d", pointer+i);
}
for(i = 0;i<count;i++){
printf("第%d個學生的學號是:%d\n",i+1,*(pointer+i));
}
printf("請輸入插班生的人數:");
//聲明一個變量increment用來保存 插班生的人數
int increment;
//接受用戶的輸入
scanf("%d",&increment);
//從新申請一塊足夠大的內存
//若是 malloc申請到的內存後面還有足夠的空間 realloc會在malloc申請的內存空間後繼續申請足夠大的內存空間
//若是 malloc申請到的內存後面沒有足夠的空間 realloc會找到一塊足夠大的堆內存 而且把 malloc申請到的內存中的值複製過來
pointer = realloc(pointer,sizeof(int)*(count+increment));
for(i = count;i<count+increment;i++){
printf("請輸入第%d個學生的學號:",i+1);
scanf("%d", pointer+i);
}
for(i = count;i<count+increment;i++){
printf("第%d個學生的學號是:%d\n",i+1,*(pointer+i));
}
system("pause");
}
複製代碼
函數指針 數組
結構體指針 bash
#include<stdio.h>
#include<stdlib.h>
/**
c結構體 相似java的class struct來聲明c的結構體
結構體的大小大於等於結構體中每一變量的佔字節數的和
結構體的大小是最大的那個變量所佔字節數的整數倍
C結構體中不能定義函數
函數指針的定義 返回值(*函數指針變量名字)(返回值);
-> 間接引用運算符
*/
void study(){
printf("good good study!\n");
}
typedef struct Student{
int age; //8
int score; // 4
char sex; //1
void(*studypointer)();
} stud;
main(){
stud stu = {18,100,'f'};
stu.studypointer = &study;
stu.studypointer();
struct Student* stuPointer = &stu;
printf("*stuPointer.age = %d\n",(*stuPointer).age);
(*stuPointer).sex ='m';
printf("stu.sex = %c\n",stu.sex);
printf("stuPointer->age = %d",stuPointer->age);
//printf("stu.age = %hd\n",stu.age);
//printf("stu.score = %d\n",stu.score);
//printf("stu.sex = %c\n",stu.sex);
// printf("結構體student佔%d個字節\n",sizeof(stu));
system("pause");
}
複製代碼