8-6. 指针与多维数组

  • 学习人数 30K+
  • 适合所有人群学习
avatar
林耿亮

你好编程主讲老师

这一节中,我们讨论指针与多维数组的关系。 在开始之前,我们再次回忆一下什么是多维数组。

1.声明数组

数组由一系列类型相同的数据对象依次排列组成的复合结构。那么声明数组至少要提供三类参数。

  1. 数组名。
  2. 数组元素的类型。
  3. 数组元素的数量。

数组声明的公式:

数组声明公式

根据公式我们来写几个数组的声明。

例如,一个数组A,它的元素为int类型,元素数量为10个。

  1. 数组名:A
  2. 数组元素的类型:int
  3. 数组元素的数量:10

数组A的声明如下:

int A[10];

在声明中,去掉变量名和分号,即可得到数据类型。数组A的类型为int [10]

假设,另外有一个数组B,它的元素类型为数组int [10],元素数量为5个。

  1. 数组名:B
  2. 数组元素的类型:int [10]
  3. 数组元素的数量:5

组合这3个要素,写出如下声明:

int[10] B[5];

还差一点,数组名左边的方括号都移到最右边来。下面才是数组B的正确声明。

int B[5][10];

数组B的类型为int [5][10]

通用数组声明公式

通用数组声明公式

数组声明至少有一个[元素个数]

访问数组A的最基本元素,需要提供一个下标即可,例如A[x]

访问数组B的最基本元素,首先需要提供一个下标B[x],访问其中的元素。但是,其元素也是一个数组,所以需要再提供一个下标。例如B[x][y],即可访问到B中的最基本元素。

由于数组A仅需要一个下标,所以被称为一维数组。 而数组B需要两个下标,逻辑上可以看做一个二维矩阵,所以被称之为二维数组

2.数组名的转换规则

我们可以通过数组名来取得一个数组的首地址,数组名与首地址的联系如下:

当数组名arr出现在一个表达式当中,数组名arr将会被转换为指向数组首元素的指针。但是,这个规则有两个例外:

  1. 对数组名arr使用sizeof时。
  2. 对数组名arr使用&时。