c语言——变量的地址

这里写图片描述

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main()
{
    char s[] = "123456";
    char d[] = "123";
    printf("%d %d\n",s,d);
    for(int i=0;i<sizeof(d); i++)
        printf("%d\n",&d[i]);
    printf("\n");
    for(int j=0;j<sizeof(s); j++)
        printf("%d\n",&s[j]);
    printf("\n");

    strcpy(d,s);
    printf("%s\n",s);
    printf("%s\n",d);

}

这里写图片描述

#include <stdio.h>

int g1=0,g2=0,g3=0;
void main ()
{
    static int s1=0, s2=0, s3=0;
    int v1=0, v2=0, v3=0;
    printf("0x%08x\n", &v1);
    printf("0x%08x\n", &v2);
    printf("0x%08x\n", &v3);
    printf("0x%08x\n", &s1);
    printf("0x%08x\n", &s2);
    printf("0x%08x\n", &s3);
    printf("0x%08x\n", &g1);
    printf("0x%08x\n", &g2);
    printf("0x%08x\n", &g3);

}

这里写图片描述

局部变量在栈中,从高地址分配到低地址。全局和静态变量在静态区,从低地址分配到高地址

#include <stdio.h>

typedef struct Stu{
    int num;
    char ch[5];
}Stu;
void main ()
{
    int v1=0, v2=0, v3=0;
    Stu s1={1,"lly"};
    Stu s2={2,"Jack"};

    printf("0x%08x\n", &v1);
    printf("0x%08x\n", &v2);
    printf("0x%08x\n\n", &v3);

    printf("%d\n", sizeof(Stu));
    printf("0x%08x\n", &s1);
    printf("0x%08x\n\n", &s2);

    printf("0x%08x\n", &s1.num);
    printf("0x%08x\n", s1.ch);
    printf("0x%08x\n", &s2.num);
    printf("0x%08x\n", s2.ch);
}

这里写图片描述
局部变量从高地址开始分配;结构体定义后将sizeof(Stu)大小的地址分配过去,结构体变量内部的变量从被分配地址的低地址开始分配,结构体变量的地址的最低地址。
这里写图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值