#include <stdio.h>
int main()
{
char array[10] = { 0 };
printf("array = %p\n", array); //数组首元素的首地址,其等价于&array[0]
printf("&array[0] = %p\n", &array[0]); //数组首元素的首地址
printf("&array = %p\n", &array); //整个数组array的首地址
//+1”就是偏移量问题:一个类型为T的指针的移动,是以sizeof(T)为移动单位
printf("array + 1 = %p\n", array + 1); //偏移量1 = sizeof(array[0])
printf("&array[0] + 1 = %p\n", &array[0] + 1); //偏移量1 = sizeof(array[0])
printf("&array + 1 = %p\n", &array + 1); //偏移量1 = sizeof(array[10])
printf("sizeof(array) = %d\n", sizeof(array)); //整个数组所占的字节数 10*1 = 10
printf("sizeof(&array[0]) = %d\n", sizeof(&array[0]));//指针所占的字节数4
getchar();
return 0;
}
其中array 和 &array[0]都是数组首元素地址,但是各自取sizeof所得值不同就是"二者地址相同但是意义不同的体现"
|