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就是不变的一个常量指针;