现有如下代码:
运行结果为:
通过这个例子,我个人的理解是:
虽然打印数组a和&a结果是相同的地址值,但所代表的意义是不同的。数组名a代表数组第一个元素的地址,指针p和数组名a其实是指向数组元素的指针。指针pa是指向数组a这个整体的指针,p和pa是不一样的。也就是说p+i是按照数组元素的大小向前移动i,而pa+i是按照整体数组的大小向前移动。
*a代表了首元素,因此sizeof(*a)显示的是元素大小;*(&a)则是去数组a的地址后,代表了该地址为起点的整个数组,因此sizeof(*(&a))显示的是数组的大小。