00问答网
所有问题
关于对数组元素a[i][j]的引用:*(*(a+i)+j)为什么也正确呢,*(a+i)等价于a[i]么?
我怎么感觉应该是a+i与a[i]等价呢。。。
举报该问题
推荐答案 2012-03-20
首先a是
二维数组
的首地址,也是二维数组第一行的首地址,是个常量指针,
a[i]也是地址,表示第 i 行的地址,
a+i表示相对于地址a偏移 i 个单位的地址,与a[i]等同,
*(a + i)表示对 相对于地址a偏移 i 个单位的地址 取内容,即表示对a[i] 的地址 再取内容,因为a[i] 与&a[i]等同,所以取出的为a[i]的地址,也与a[i]等同,为同一地址。
而*(*(a+i)+j)表示二维数组第 i 行第 j 列的元素,与a[i][j]等同。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://00.wendadaohang.com/zd/rI0r0TITe.html
其他回答
第1个回答 2012-03-19
试过了没有?
相似回答
为什么
C语言中
*(a+i)+j
能表示
a[i][j]的
地址
答:
所以
*(a+i)
就是获取
数组a
中第i个元素
,等价于a[i],
而a[i]本身又是一个包含有4个int型数值的
数组,
a[i]是这个一维
数组的数组
名,我们知道数组名的本质是一个地址,是数组首元素地址,所以 (a+i)+j就是表示下表第i行的第j个元素的地址了。所以
,(a+i)+j
表示的含义是
元素a[i][j]的
...
*(*(a+i)+j)
; *(
a[i]
+j);
*(a+i)[j]
; 前两者
等价,
但是第三个
为什么
与...
答:
因为
*(a+i)[j]
;的意思是
*((a+i)[j]),(a+i)
先和[j]结合的,结果 就是
*(a[i+j])也
就是
a[i+j][
0]
c语言书上说a(i)和
*(a+i)等价,
我觉得不对啊
答:
类似地 a[j][i] 等于 (a[j])[i],套恒等式公式,化成 ( *(a+j) )[i] ,再化成
* (*(a+
j) + i);求地址 用 & 运算:1 维:& (a[i]) = & ( *(a+i) ); 注意 &* 抵消, 得 &a[i] = (a+i )2维; &(
a[i][j]
) =
(*(a+i) + j)
;2...
C语言的一个概念性问题,我很难理解。希望C理解的深的给我详细解释解释...
答:
1.首先,因为[]优先级(顶级)高于*(次顶级),所以应先算[]。所以先只看
(a+i)[j]
。2.然后,这里一堆的东西不好看,做个简化:因为a是二维数组的名字,故a+i是第i行的行指针,相当于一个一位
数组的数组
名。把a+i记作x,那么(a+i)[j] 就可以记成 x[j]。3.由取下标运算的含义:x...
大家正在搜
将一维数组a的第i个元素的地址
vba中怎么取数组中的第i个元素
数组a的第三个元素表示为
给定一个数组他的第i个元素是股票
则对a数组元素地址
数组a[10]中有几个元素
不能表示a数组元素的表达式是
通过含有n个元素的数组a
求数组i到j元素之和dp算法
相关问题
为什么.一个数组元素a[i]与a+i的表示等价?谢谢啦
引用数组元素*(*(a+i))是什么意思
*(*(a+i)+j)的问题
如何理解*(*&a[i]+j)
c语言中a+i是地址吗,书上说a+i是a[i]的指针,既然这...
若有定义:int a[2][3];则对a数组的第i行第j列元...
*(*(a+i)+j)中*(a+i)+j 代表什么意思? /...
*(*(a+i))与*(a+i)