各变量在内存中的位置

来源:互联网 发布:python做数据分析 编辑:程序博客网 时间:2024/05/16 23:57

在Linux中写一个程序,里面全局变量,局部变量,static,const,常数,数组,输出这些变量的地址(包括赋值的和没有赋值的,各类数据类型)

#include<stdio.h>

int a;
int b = 1;
int const c = 2;
static int d;
static int e = 3;

char src1[20];
char dest1[] = {'a','b'};


int main()
{

int f;
int g = 1;
int const h = 2;
static int i;
static int j = 3;
char src[20];
char dest[] = {'a','b'};

printf("全局变量,未初始化 %p\n",&a);
printf("全局变量,初始化 %p\n",&b);
printf("常全局变量 %p\n",&c);
printf("静态全局变量,未初始化 %p\n",&d);
printf("静态全局变量,初始化 %p\n",&e);
printf("全局数组,未初始化%p\n",src1);
printf("全局数组,初始化 %p\n",dest1);
printf("局部变量,未初始化 %p\n",&f);
printf("局部变量,初始化 %p\n",&g);
printf("常局部变量 %p\n",&h);
printf("静态局部变量,未初始化 %p\n",&i);
printf("静态局部变量,初始化 %p\n",&j);
printf("局部数组,未初始化%p\n",src);
printf("局部数组,初始化 %p\n",dest);

}

在Linux中的运行结果截图 
这里写图片描述

由结果可以看出 
常全局变量在一个区域 
局部变量、数组(包括已初始化和未初始化)、常局部变量,在同一个区域 
静态局部变量、常全局变量、静态全局变量、全局数组(包括已初始化和未初始化)在一片区域,但是已经初始化的在未初始化的之前

进程的地址空间分配详见C语言第三课


0 0
原创粉丝点击