各类变量在内存中的地址分配

来源:互联网 发布:linux如何退出命令 编辑:程序博客网 时间:2024/05/15 05:21

在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
原创粉丝点击