代码改变世界

[整理]C语言中的a,&a和&a[0]

2014-06-22 10:46  Benoly  阅读(770)  评论(0编辑  收藏  举报
#include<stdio.h>

int main(void)
{	
	int a[]={1,2,3};

	printf("%0X\n",a);         // a的类型原本是int [3],是个导出类型; 当a赋值给int *指针的时候,类型退化为int *,a+1指向a[1]
	printf("%0X\n",&a);	   // &a的类型是int (*)[3], &a+1指向下一块int[3]的另一个数组;如果有的话,即二维数组的的情况:	int (*p)[3]=&a;。
	printf("%0X\n",&a[0]);	   // &a[0]的类型是int *,&a[0]+1指向a[1]

	printf("%d\n",sizeof(a));      //12,数组长度3*sizeof(int)
	printf("%d\n",sizeof(&a));     //4,指针大小
	printf("%d\n",sizeof(&a[0]));  //4,指针大小

	return 0;
}