对于二维数组int a[2][3]来说*a怎么也表示数组的首地址?这个怎么理解的啊?

对于二维数组a[2][3],则a[2]表示是第二行的首地址... 对于二维数组a[2][3],则a[2]表示是第二行的首地址 展开
 我来答
金色潜鸟
2020-12-26 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5698万
展开全部
二维数组int a[N][M]来说, 数组的首地址 是 &(a[0][0]), 即 下标是 0行0列 的数组元素的地址。
方括号 在c/c++ 中实际上是运算符,有恒等式 x[i] = *(x+i) 。
我们可以来计算 a[i][j] 的地址 &(a[i][j]):
&(a[i][j]) = & ( * (a[i]+j) ) = & ( * ( *(a+i) + j)) = *(a+i)+j ;
把 i=0 和 j=0 代入 , 得到: &(a[0][0]) = *a; 所以: *a怎么也表示数组的首地址。
二维数组int a[N][M] 它的下标范围是 0到N-1, 0到M-1,
" 对于二维数组a[2][3],则a[2]表示是第二行的首地址" 这句话是错的。因下标超界了。
第一行的首地址 是i=0,j=0, a[i] = a[0],
第二行的首地址 是i=1,j=0, a[i] = a[1]。
从 &(a[i][j]) = & ( * (a[i]+j) ) 可以导出, &(a[1][0])= & ( *(a[1]+0)) = %(*(a[1]))=a[1];
应当说: 对于二维数组a[2][3],则a[1]表示是第二行的首地址。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式