- 数组名代表的是一个数组的首地址
- &数组名代表的是整个数组的地址(&数组名+1为这个数组的下一位地址)
下面这段代码可以很好的解决这个问题:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
char array[] = "zhangjunhao";
printf("array的值为:%d\n", array);
printf("&array的值为:%d\n", &array);
printf("array+1的值为:%d\n", array+1);
printf("&array+1的值为:%d\n", &array+1);
return 0;
}
输出值为:
array的值为:6422036
&array的值为:6422036
array+1的值为:6422037
&array+1的值为:6422048
明明上一秒array和&array的值还相同,但是+1后的值就不同了,原因是array 是数组第一个元素的地址,所以 array + 1 指向数组第二个元素;&array 是整个数组的地址,所以 &array + 1 指向整个数组最后的位置