新东方小升初冲刺班:C语言问题同一样的输出语句,一维数组输出的是数值,二维数组输出的是地址,这是为什么?

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/05 10:52:14
#include <stdio.h>
main()
{

int a[4][3]={{1,2,3},{4,5,6},{7,8,9},{1,2,3}};

int b[5]={5,4,3,2,1};

printf("%x\n",*a);
printf("%x\n",*b);

}
结果12ff50
5
同一样的输出语句,一维数组输出的是数值,二维数组输出的是地址,这是为什么?

printf("%x\n",*a); //这个代表输出第一个元素即*(a+0) 如果加1就是第二个元素
printf("%x\n",*b);//这个代表指向第一个数组的指针即*(b+0)

二维数组第一维存的是第二维的首地址
所以你要是用*a[0]就能得到1了

他输出的是另外的一个指针地址*a并不是第一个值,而是指向的第一个数组的地址