C语言中关于指针和数组名的应用

1关于指针的偏移导致数组取值错误,下面举2个例子

在这里例子中,当数组第一次输出完后我加了一个p=a;再次把数组a的首地址赋给了p;第二次输出数组还是正常输出;

而这次我没有重新赋地址,结果输出出错,不难看出第一次输出数组时,地址p发生了自加导致,第二次输出时,地址自然就对不上了,因为数组a的地址是不变的,当你给数组a赋值时,a的首地址就定了,第二次地址对不上自然就出错了;

 2关于数组大小,地址大小,数组元素大小

 

 不难看出,数组a的大小是int型的即3*4=12;而在os在地址大小都是8字节,数组每个元素大小int型自然就是4字节了;

 关于数组输出的几种方式;

 很容易看出,好像数组的首地址a赋值给p后,a就等于p了;

但下面有个特例;

 

 

 

 第一次用地址p自加输出,没有问题;

但是第二次用数组a首地址a自加输出,却报错了,错误翻译过来就是“[错误]要求左值作为增量操作数”,可以看出a不是一个增量操作数,顾名思义数组a在定义时系统就为其开辟了内存,a就是不变的一个常量指针;

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值