C语言笔记-数组地址偏移与指向数组指针偏移的关系

数组地址偏移与指向数组指针偏移的关系

引言:
在学习C语言过程中,使用数组的情况比较多,那么这里简单描述一下比较容易踩坑的数组地址的问题。

一、数组地址偏移与指向数组指针偏移
例如,定义一个数组,如下:

unsigned char Data[3]={1,2,3};
     那么有:
      A、Data或者&Data[0] 都是表示这个数组的起始地址。
    其关系有:
1.地址关系:&Data[0] = Data 、&Data[1] = Data+1&Data[2] = Data+22.数值关系:Data[0] = *Data = 1;Data[1] = *(Data+1) = 2 ;Data[2] = *(Data+2) = 3

B、&Data表示整个数组的起始地址(基地址),其偏移量为整个数组内存大小。
例如:

1.&Data + 1表示起始地址(基地址)整体偏移一个内存,即表示&Data[3]
2.&Data + 2表示起始地址(基地址)整体偏移两个内存,即表示&Data[6]

二、应用

void main(void)
{
    unsigned char *PA;
    unsigned char Data[3]={1,2,3};
    unsigned char B;

    PA =(unsigned char*)( &Data + 1);  //&Data + 1表示起始地址(基地址)整体偏移一个内存,即表示&Data[3],那么PA存放Data[3]的地址

    B = *(PA -1);  //因为PA存放Data[3]的地址, 所以PA-1表示&Data[2],那么*(PA-1)表示Data[2]的值。
   
    Printf(“B的值等于%d”,B);  // 输出结果为3

	While(1)
	{
	
	}
}
                                            2021.01.11  于深圳龙岗 
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值