动态分配内存与静态分配内存

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
",*p);
    ff(1);
    printf("%d
",*p);
    printf("Hello, world!
");
    return 0;
}
原文地址:https://www.cnblogs.com/mattins/p/3345681.html