它这么说的应该是没有错的
全是a[0][0]的地址
a是数组首地址是a[0][0]的地址
a[0]是a[0]行的首地址,还是a[0][0]的地址
*(a+0)和a[0]是一样的
&a[0][0]就是a[0][0]的地址,所以全是一样的
大哥,你不相信我,你也要相信电脑啊:
这题中没有出现二级指针,一直都是同一个数组,所以这四个就是相等的
看完要是你都还不信,我就没有办法拯救你了
你说的没有错,但这是个特例,数组首地址和第一行的首地址就是同一个数的地址啊,怎么会不一样呢就象你学减法一样,减掉一个数之后和本身就不一样了,但你遇到了0,也是没有办法的
书上说:a,a[0],*(a+0),*a,&a[0][0]是相等的。对2维数组来说,话是正确的。
通常有用的 是,语句里 &a[i][j] 表示 第 i 行 第 j 列 元素的地址。
a, &a[0][0] 是 数组的首地址。其它的 可以 先不去记它。
2维数组int a[3][4]: *a[0] 是a[0][0]的值, *a 是地址。
1维数组 int b[3]: *b 是 b[0] 的值.
1维2维 不同。
C 语言是很头痛的事。它的形式逻辑性差,外貌相同,在声明和语句里,可能表示不同意思。
慢慢来,熟能生巧。
在C语言中,数组和指针编译是同处理的,也就是数组和指针是等同的。二维数组相当于二级指针。 你所说的例子全部等同且表示的是a[0][0]的首地址。 二级指针要取其内容是要打2个星号的,即首元素为**a,*a[0],a[0][0]