数组只有单独使用在&和sizeof时才代表整个数组。
#include<stdio.h>
int main(){
int a[3] = { 1, 2, 3 };
printf("%p\n", a);//首元素的地址
printf("%p\n", &a);//数组最低的地址
printf("%p\n", a + 1);//输出多4bit只跨越了一个元素
printf("%p\n", &a + 1);//输出多12字节,跨越整个数组
return 0;
}
输出:
#include<stdio.h>
int main(){
int a[3] = { 1, 2, 3 };
printf("%d\n", sizeof(a));
printf("%d\n", sizeof(a+1));
system("pause");
return 0;
}
输出:
第一个因为代表整个数组4*3=12。
第二个只代表前面一个元素4*1=4。