C语言笔记(数组地址一些细节)

 

 一、数组的a+1和&a+1的区别

先看看测试代码:

1 int data[10]={};
2 printf(" sizeof(data) = %d.\n", sizeof(data));
3 
4 printf(" data         = %p.\n", data);
5 printf(" &data        = %p.\n", &data);
6 printf(" (data+1)     = %p.\n", (data+1));
7 printf(" ((&data)+1)  = %p.\n", ((&data)+1)); // data+1*sizeof(data)

运行结果:

分析:

  (1)可以看出a的值等价于&a。

  (2)a+1表示指向数组中下一个数据地址处;&a+1表示加上整个数组的大小,已经超出了数组的范围。

  (3)&a+1这种用法是有一定危险的,建议一般情况下不要使用。

  (4)实际中有可能不会使用,但是在这里分析是为了加深对数组的内存分布的理解。

 

posted @ 2015-11-12 14:29  小清奈  阅读(299)  评论(0编辑  收藏  举报