概述
目录
对元素的访问
内存移动
对元素的访问
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];
- 对二维数组名取地址&a:表示的是整个数组;
- 数组名代表的含义:是行地址,第一行的行首地址;对数组名直接加1,指向下一行;
- a[0]的含义:是列地址,第一行第一列的列地址,对其加1,指向下一列;
- &a+1的内存地址增加了多少:增加了i*j*sizeof(int)个字节,也就是二维数组中所有的元素字节总大小;
- a+1的内存地址增加了多少:增加了j*sizeof(int)个字节,也就是二维数组一行的元素的总字节大小;
- a[0]+1的内存地址增加了多少:增加了sizeof(int)个字节,也就是一个元素的字节大小;
最后
以上就是调皮魔镜为你收集整理的二维数组-对元素的访问/内存移动对元素的访问内存移动的全部内容,希望文章能够帮你解决二维数组-对元素的访问/内存移动对元素的访问内存移动所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复