示例代码:
#include <stdio.h>
#include <stdlib.h>
int a=1;
static int b;
static int c=4;
int d;
int main(int argc, char const *argv[])
{
int e=1;
int f;
static int g=3;
printf("a=%p\n", &a);
printf("b=%p\n", &b);
printf("c=%p\n", &c);
printf("d=%p\n", &d);
printf("main=%p\n", main);
printf("e=%p\n", &e);
printf("f=%p\n", &f);
printf("g=%p\n", &g);
char *p=malloc(20);
printf("p=%p\n", p);
return 0;
}
比较分析各个类型输出的地址。如图:
注意:
1.静态段&&动态段区别
静态:编译阶段就确定各种属性
动态:编译阶段不存在,只有在程序执行后才动太开辟空间
经验:
如果想要数据周期长,效率高,不在意编译后的大小,可以采用静方式,反之,可以采用动态方式