动态分配内存与静态分配内存
malloc(sizeof(int));//申请 int 大小的内存
typedef struct{
int a;
int b;
}MA;
当想用这个MA的时候,可以
void test1(){
MA m;
m.a = 3;
m.b = 4;
}
还可以这样
void test2(){
MA *m = (MA*)malloc(sizeof(MA));
m->a = 3;
m->b = 4;
}
这两个的不同是
test1的m在编译阶段就会计算好内存,这个内存的大小是固定,这样在第二次使用test1的方法时变量m的地址,内存,还是那个第一次变量m的地址,内存。
test2在第二次使用时会新分配一块内存出来。
int *p; void ff(int b){ int c; if(b==0){ c = 3; p = &c; } else{ c = 2; } } int main(int argc, char *argv[]) { ff(0); printf("%d\n",*p); ff(1); printf("%d\n",*p); printf("Hello, world!\n"); return 0; }