一、数组的a+1和&a+1的区别
先看看测试代码:
int data[]={};
printf(" sizeof(data) = %d.\n", sizeof(data)); printf(" data = %p.\n", data);
printf(" &data = %p.\n", &data);
printf(" (data+1) = %p.\n", (data+));
printf(" ((&data)+1) = %p.\n", ((&data)+)); // data+1*sizeof(data)
运行结果:
分析:
(1)可以看出a的值等价于&a。
(2)a+1表示指向数组中下一个数据地址处;&a+1表示加上整个数组的大小,已经超出了数组的范围。
(3)&a+1这种用法是有一定危险的,建议一般情况下不要使用。
(4)实际中有可能不会使用,但是在这里分析是为了加深对数组的内存分布的理解。