数组名的理解:
1.在实际应用中,大多数数组名的值是个指针常量,也就是数组的第一个元素地址。
2.数组名在运算中(除针了定义和声明外)可以理解成第一个元素指针(常量),但在数组可做的运
算中,不能把数组名理解成第一个元素指针(常量)。(在C语言中数组只能做sizeof、[]、&三种运算)。
3.取一个数组名的地址所产生的是一个指向数组的指针,而不是一个指向某个指针常量的指针。
验证程序
#include <stdio.h>
int a[4] = {1,2,3,4};
int main(int argc, const char *argv[])
{
int *p = (int *)&a;
printf("a=%p,a+1=%p\n",a,a+1);
printf("&a=%p,&a+1=%p\n",&a,&a+1);
printf("*(&a+1)=%d,*(a+1)=%d",*(&a+1),*(a+1));
return 0;
}
打印结果
a=0x804a014,a+1=0x804a018
&a=0x804a014,&a+1=0x804a024
*(p-1)=4,*(a+1)=2