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