关于数组的一道题:
int a[5]={1,2,3,4,5};
printf("a: %d\n",a);
printf("&a: %d\n",&a);
printf("&a[0]: %d\n",&a[0]);
printf("a+1: %d\n",a+1);
printf("&a+1: %d\n",&a+1);
printf("&a[0]+1: %d\n",&a[0]+1);
VC中运行结果如下:
a就相当于&a[0];
&a表示数组a的首地址,&a[0]表示数组a第一个元素地址,二者在数值上是相等的;
&a+1指向数组a末尾后的一个地址,在一维数组中无意义,值大小相当于&a[0] + sizeof(a);
&a[0]+1指向数组中第二个元素,值大小相当于&a[0] + sizeof(int);
学习一下。