C深入理解 指针与二维数组的关系

下面哪一个表达式不能访问二维数组b的第i行第j列元素?

A、b[i][j]
B、*(b[i]+j)
C、*(*b+i)+j
D、(*(b+i))[j]



*的使用方法:二维数组a[i][j]的数组名a前加上*,使行地址转换为列地址; 
例: 
a+i为第i行行地址,则*(a+i)为第i行第0列的列地址; 
*(a+i)+j为第i行第j列的列地址; 

* (*(a+i)+j)中的第一个*是指向运算符,指向第i行第j列所在单元,等价于a[i][j];


A选项: b[i][j]:通过下标的方式,所以A正确

B选项: *(b[i]+j) :b[i]相当于二维数组的i行,加上j,就相当于i行j列,然后取地址。所以B正确

C选项: *(*b+i)+j:数组名b相当于指针,*b+i  b[0][i],取地址加j相当于b[j][i]所以C错误

D选项: (*(b+i))[j]:b+i为第i行地址,在使用*表示第i行首元素内容合并[j]下标,即b[i][j],所以D正确

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值