在Linux中写一个程序,里面全局变量,局部变量,static,const,常数,数组,输出这些变量的地址(包括赋值的和没有赋值的,各类数据类型);
代码如下:
#include <stdio.h>
int a;
int b = 1;
int const c = 1;
int const x;
static int d;
static int e = 1;
char str[3];
char str1[] = {'h','i'};
int main()
{
int f;
int g = 1;
int const h = 1;
int const y ;
static int j;
static int k = 1;
char str2[3];
char str3[]={'h','i' };
printf("uninit global variable addr%p\n",&a);
printf("init global variable addr%p\n",&b);
printf("init const global variable addr%p\n",&c);
printf("uninit const global variable addr%p\n",&x);
printf("uninit static global variable addr%p\n",&d);
printf("init static global variable addr%p\n",&e);
printf("uninit global array addr%p\n",str);
printf("init global array addr%p\n",str1);
printf("uninit local variable addr%p\n",f);
printf("init local variable addr%p\n",g);
printf("init const local variable addr%p\n",h);
printf("uninit const local variable addr%p\n",y);
printf("uninit static local variable addr%p\n",j);
printf("init static local variable addr%p\n",k);
printf("uninit local array addr%p\n",str2);
printf("init local array addr%p\n",str3);
return 0;
}
结果如下所示:
由结果可以看出:
常全局变量在一个区域;
局部变量、数组(包括已初始化和未初始化)、常局部变量,在同一个区域;
静态局部变量、常全局变量、静态全局变量、全局数组(包括已初始化和未初始化)在一片区域,但是已经初始化的在未初始化的之前。