二维数组-对元素的访问/内存移动

目录

对元素的访问

内存移动


对元素的访问

int a[n][m];

二维数组的数组名:不能表示数组的首地址,表示的是行地址,是第一行的首地址,

“ 二维数组名+1 ”代表第二行的地址,

通过 “ *数组名 ”将行地址降为列地址

*a表示:a[0][0]第一行第一个元素的地址,

*a+1表示:a[0][1]第一行第二个元素的地址,

*(a+1)表示:a[1][0]第二行第一个元素的地址,

*(a+1)+1表示:a[1][1]第二行第二个元素的地址。

a[0]表示第一行的首地址,a[1]表示第二行的首地址;

不可以直接用指针指向二维数组名

A.通过下标的方式取到第i行第j行的元素,正确

B.b[i]表示第i行,

b[i]+j表示第i行第j列,

*(b[i]+j)表示取值;正确

C.因为二维数组名b表示行地址,即第一行的行地址;

*b表示把行降级为列,则*b+i表示第一行第i个元素的地址,也就是b[0][i];

*(*b+1)表示取b[0][i]的值,也就是第一行第i个元素的值;

所以*(*b+i)+j是取了b[0][i]的值之后加j;错误

D.b+i,代表的是第i行的行首地址;

*(b+i)即把行地址降为列地址;

(*(b+i))[j]即以下标的方式取第i行中的第j个元素的值;正确

内存移动

int a[i][j];

  1. 对二维数组名取地址&a:表示的是整个数组;
  2. 数组名代表的含义:是行地址,第一行的行首地址;对数组名直接加1,指向下一行;
  3. a[0]的含义:是列地址,第一行第一列的列地址,对其加1,指向下一列;
  4. &a+1的内存地址增加了多少:增加了i*j*sizeof(int)个字节,也就是二维数组中所有的元素字节总大小;
  5. a+1的内存地址增加了多少:增加了j*sizeof(int)个字节,也就是二维数组一行的元素的总字节大小;
  6. a[0]+1的内存地址增加了多少:增加了sizeof(int)个字节,也就是一个元素的字节大小;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值