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

在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语言第三课

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值