我是靠谱客的博主 调皮魔镜,最近开发中收集的这篇文章主要介绍二维数组-对元素的访问/内存移动对元素的访问内存移动,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

对元素的访问

内存移动


对元素的访问

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)个字节,也就是一个元素的字节大小;

最后

以上就是调皮魔镜为你收集整理的二维数组-对元素的访问/内存移动对元素的访问内存移动的全部内容,希望文章能够帮你解决二维数组-对元素的访问/内存移动对元素的访问内存移动所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部