无恙


私信TA

用户名:20200302201100

访问量:884

签 名:

初入凡尘不识人间苦,慕然回首已是苦中人。

等  级
排  名 10829
经  验 1064
参赛次数 0
文章发表 3
年  龄 18
在职情况 学生
学  校
专  业 软件工程

  自我简介:

多年后若能重逢,道别来无恙。

TA的其他文章

二维数组和指针

二维数组的逻辑结构为行列形式,但二维数组的存储结构为顺序形式。即二维数组中的数据元素在内存中的存储地址是连续的,故可以使用指针变量保存各个元素的地址值,进而可以间接访问二维数组中的各元素。

例如:

#define M 3
#define N 4
int a[M][N],*p,i,j;

上述语句定义了一个二维整型数组 a、整型指针变量 p 及整型变量 i 和 j。

访问二维数组中的元素,目前可有如下两种方法:

使用行列下标,直接访问,即 a[i][j] 形式。如 a[2][3] 表示 2 行 3 列数组元素。

通过地址,间接访问,即 *(*(a+i)+j) 形式。


M 行 N 列的二维数组 a,可以看成是含有 a[0]、a[1]、…、a[M-1] 等 M 个元素(M 行)的特殊一维数组,其每个元素 a[i](每行)又是一个含有 N 个元素(N 列)的一维数组。

由于 a[i] 可看成是“一维”数组 a的元素,而 a 可看成该“一维”数组的数组名。根据一维数组元素和一维数组名的关系可得:a[i] 等价于 *(a+i),均表示 i 行的首地址。

而 i 行又含有 N 个元素(N 列),即 a[i][0]、a[i][1]、a[i][2]、…、a[i][j]、…、a[i][N-1]。故 a[i] 表示i行对应一维数组的数组名。由于一维数组名 a[i] 即首元素 a[i][0] 的地址,即 a[i] 等价于 &a[i][0],用 <--> 表示等价,则有以下关系:

i 行首元素地址:a[i] + 0 <--> *(a + i) +0 <-->&a[i][0]

i 行 1 列元素地址:a[i] + 1 <--> *(a + i) +1<-->&a[i][1]

i 行 2 列元素地址:a[i] + 2 <--> *(a + i) +2<-->&a[i][2]

i 行 j 列元素地址:a[i] + j <--> *(a + i) + j <-->&a[i][j]


地址即指针,通过间接访问符 *,可以访问指针所指空间。即可得访问二维数组元素 a[i][j] 的几种等价形式如下。


 

0.0分

0 人评分

  评论区

  • «
  • »