C/C++二维数组指针(指向二维数组的指针)详解 您所在的位置:网站首页 c语言指针求二维数组最大值 C/C++二维数组指针(指向二维数组的指针)详解

C/C++二维数组指针(指向二维数组的指针)详解

2024-07-01 01:09| 来源: 网络整理| 查看: 265

多维数组与指针

用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素。1) 多维数组元素的地址 设有一个二维数组 a,它有 3 行 4 列。它的定义为:     int a[3][4]={{1,3,5,7},{9,11,13,15},{17,18,21,23}}; a 是一个数组名。a 数组包含 3 行,即 3 个元素:a [0],a [1],a [2]。而每一元素又是一个一维数组,它包含 4 个元素 (即 4 个列元素),例如,a [0] 所代表的一维数组又包含 4 个元素: a [0][0], a [0][1], a [0][2], a [0][3],如图所示。可以认为二维数组是 “数组的数组”,即数组 a 是由 3 个一维数组所组成的。  

从二维数组的角度来看,a 代表二维数组首元素的地址,现在的首元素不是一个整型变量,而是由 4 个整型元素所组成的一维数组,因此 a 代表的是首行的起始地址 (即第 0 行的起始地址,&a [0]),a+1 代表 a [1] 行的首地址,即 & a [1]。 a [0],a [1],a [2] 既然是一维数组名,而 C++ 又规定了数组名代表数组首元素地址,因此 a [0] 代表一维数组 a [0] 中 0 列元素的地址,即 & a [0][0]。a [1] 的值是 & a [1][0],a [2] 的值是 & a [2][0]。  

0 行 1 列元素的地址可以直接写为 & a [0][1],也可以用指针法表示。a [0] 为一维数组名,该一维数组中序号为 1 的元素显然可以用 a [0]+1 来表示。 欲得到 a [0][1] 的值,用地址法怎么表示呢?既然 a [0]+1 是 a [0][1] 元素的地址,那么,*(a [0]+1) 就是 a [0][1] 元素的值。而 a [0] 又是和 *(a+0) 无条件等价的,因此也可以用 *(*(a+0)+1) 表示 a [0][1] 元素的值。依此类推,*(a [i]+j) 或 *(*(a+i)+j) 是 a [i][j] 的值。  

2) 指向多维数组元素的指针变量 ① 指向数组元素的指针变量 【例1】输出二维数组各元素的值。这里采用的方法是用基类型为整型的指针变量先后指向各元素,逐个输出它们的值。(三种方法均可)

#include using namespace std; int main() { int a[3][4] = { 1,3,5,7,9,11,13,15,17,19,21,23 }; //p是基类型为整型的指针变量 //p = a[0] 等同于 p = &a[0][0]; 也即0行首元素的地址 int* p; for (p = a[0]; p < a[0] + 12; p++) cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有