二维数组名的奇特现象!
最近我温习了一下指针,发现了一些奇特的现象,请各人达人赐教,偶感激涕零!#include "stdio.h"
main()
{
int b[2][3]={2,6,5,4,7,8};
printf("\n%d\t%d\t%d\n",b,b[0],&b[0][0]); /* 二维数组名是从二维数组中第一行(一维数组)的首地址是二维数*/ /* 组中的第一个元素的首地址 */
printf("\n%d\t%d\t%d\n",*b,*b[0],b[0][0]); /* 这里第一个输出不同,后面两个相同.为什么?*/
printf("\n%d\t%d\t%d\n",b,*b,&b); /*更绝的是这一行的输出,全部相同.*/
printf("\n%d\t%d\n",b+1,&b+1); /* 这两个数输出为什么不相同.为什么又和下面一行输出效果一样,*/
/* 请问达人为什么? */
printf("\n%d\t%d\n",*(b+1),*(&b+1)); /*和上面一行输出完全一样*/
}
下面是在两个不同的编译器中运行的结果,只有一些地址不同,但本质上是一样的.其余相同.
[[italic] 本帖最后由 way3 于 2008-1-13 15:49 编辑 [/italic]]
数组名1.jpg
(6.49 KB)
数组名2.jpg
(7.71 KB)