C++ 多维数组

多维数组


相关数组知识连接:
动态数组
数组详解


数组可以表示线性一维的数据序列,而现实世界中存在着许多二维、三维,甚至高维数据序列。比如一个二维平面中每个单位区域的某种属性就是二维的序列(电脑屏幕每个像素的颜色),而三维空间每个单位区域的某种属性就是三维的序列(房间中每单位体积的空气密度)。为了表示这些多维的数据序列,我们就需要使用多维数组。


多维数组的创建与初始化

与一维数组类似,多维数组也可以通过初始化列表来初始化,这是形式上有区别。

多维数组的创建

#include<iostream>
using namespace std;

//多维数组的创建

int main()
{
    
    
	int arr[3] [3] = {
    
      {
    
     0, 1, 2},
			 {
    
     3, 4, 5 },
			 {
    
     6, 7, 8 } };
	int arr2[3] [3] = {
    
     0, 1, 2, 3, 4, 5, 6, 7, 8 };
	int arr3[2] [2] [2] = {
    
     {
    
     {
    
     0, 1 },
				  {
    
     2, 3 } },
				  {
    
     {
    
     4, 5 },
		      		    {
    
     6, 7} } };
	return 0;
}

示例展示了多维数组的初始化。其中前两个数组arr1,和arr 2用两种形式初始化了相同的两个3行3列的二维数组。在第一种方式中,我们为每一行都加了一个花括号,这样阅读起来也更清晰。arr3 是一个三维数组,可以把前两个数组看作平面的方阵,而把它看作三维的立方体,前后左右上下各有四个元素。


多维数组的遍历

多维数组需要使用多重循环来遍历。

多维数组的遍历

#include<iostream>
using namespace std;

//多维数组的遍历

int main()
{
    
    
	int arr1[3][3] = {
    
     {
    
     0, 1, 2 },
			   {
    
     3, 4, 5 },
			   {
    
     6, 7, 8 } };
	for ( int i = 0;i < 3; i++)
	{
    
    
		for ( int j = 0; j < 3; j++)
		{
    
    
			cout << arr1[i][j] << " ";
		}
		cout << endl;
	}
	return 0;
}

运行结果:
在这里插入图片描述
可以看到,读取二维数组的元素需要两个计数器来作为下标。内循环遍历的是数组的第二维,也就是同一行中的元素;而外循环遍历的是数组的第一维。


多维数组与数组

二维数组的本质其实是一个数组的数组。int arr[3]是元素为int 而大小为3 的数组,而intarr [3][3]是元素为int arr[3]的类型而大小为3的数组。

多维数组的理解

#include<iostream>
using namespace std;

//多维数组的理解

int main()
{
    
    
	int arr1[3][3] = {
    
     {
    
     0, 1, 2 },
			   {
    
     3, 4, 5 },
			   {
    
     6, 7, 8 } };
	cout << "arr1: " << arr1 << endl;
	for ( int i = 0 ; i < 3 ; i++ )
	{
    
    
		cout << "arr1[" << i << "]:" << arr1[i] << endl;
	       for ( int j = 0 ; j < 3 ; j++ )
	       {
    
    
			cout << arr1[i][j] << " ";
	       }
		cout << endl;
	}
	return 0 ;
}

运行结果
打印了数组名和子数组名所代表的地址
在这里插入图片描述
二维数组就相当于一个元素比较大的普通数组,这个数组的每个元素就是子数组名代表的一个数组。此外,子数组名也可以像数组那样当做地址赋值给指针。


相关数组知识连接:
动态数组
数组详解


如果本文对你有帮助,请点赞支持一下~

猜你喜欢

转载自blog.csdn.net/m0_62870588/article/details/123866514
今日推荐