C/C++教程

C++ 二维数组

本文主要是介绍C++ 二维数组,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

5.3 二维数组

二维数组就是在一维数组上,多加一个维度。

二维数组定义的四种方式:

  1. 数据类型 数组名[ 行数 ][ 列数 ];
  2. 数据类型 数组名[ 行数 ][ 列数 ] = { {数据1,数据2 } ,{数据3,数据4 } };
  3. 数据类型 数组名[ 行数 ][ 列数 ] = { 数据1,数据2,数据3,数据4};
  4. 数据类型 数组名[ ][ 列数 ] = { 数据1,数据2,数据3,数据4};

建议:以上4种定义方式,利用第二种更加直观,提高代码的可读性

示例:

#include <iostream>
using namespace std;

int main() {

	// 二维数组定义方式
	// 1. 数据类型  数组名[行数][列数];
	// 2. 数据类型  数组名[行数][列数] = { {数据1,数据2 } ,{数据3,数据4 } };
	// 3. 数据类型  数组名[行数][列数] = { 数据1,数据2,数据3,数据4 };
	// 4. 数据类型  数组名[][列数] = { 数据1,数据2,数据3,数据4 };

	// 1. 数据类型  数组名[行数][列数];
	int arr[2][3];
	arr[0][0] = 1;
	arr[0][1] = 2;
	arr[0][2] = 3;
	arr[1][0] = 4;
	arr[1][1] = 5;
	arr[1][2] = 6;

	// 外层循环打印行数,内层循环打印列数
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << arr[i][j] << endl;
		}
	}

	// 2. 数据类型  数组名[行数][列数] = { {数据1,数据2 } ,{数据3,数据4 } };
	int arr2[2][3] =
	{
		{ 1,2,3 },
		{ 4,5,6 }
	};
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << arr2[i][j] << "";
		}
		cout << endl;
	}

	// 3. 数据类型  数组名[行数][列数] = { 数据1,数据2,数据3,数据4 };
	int arr3[2][3] = { 1,2,3,4,5,6 };
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << arr3[i][j] << "";
		}
		cout << endl;
	}
	
	// 4. 数据类型  数组名[][列数] = { 数据1,数据2,数据3,数据4 };
	int arr4[][3] = { 1,2,3,4,5,6 };
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << arr4[i][j] << "";
		}
		cout << endl;
	}

	system("pause");

	return 0;
}

总结:在定义二维数组时,如果初始化了数据,可以省略行数

5.3.2 二维数组数组名

  • 查看二维数组所占内存空间
  • 获取二维数组首地址

示例:

#include <iostream>
using namespace std;

int main() {

	// 二维数组名称用途

	// 1、可以查看占用内存空间大小
	int arr[2][3] =
	{
		{ 1,2,3 },
		{ 4,5,6 }
	};
	cout << "二维数组占用内存空间为:" << sizeof(arr) << endl;
	cout << "二维数组第一行占用内存为:" << sizeof(arr[0]) << endl;
	cout << "二维数组第一个元素占用内存为:" << sizeof(arr[0][0]) << endl;

	cout << "二维数组行数为:" << sizeof(arr) / sizeof(arr[0]) << endl;
	cout << "二维数组列数为:" << sizeof(arr[0]) / sizeof(arr[0][0]) << endl;

	// 2、可以查看二维数组的首地址
	cout << "二维数组的首地址为:" << (int)arr << endl;
	cout << "二维数组第一行首地址为:" << (int)arr[0] << endl;
	cout << "二维数组第二行首地址为:" << (int)arr[1] << endl;

	cout << "二维数组第一个元素首地址为:" << (int)&arr[0][0] << endl;
	cout << "二维数组第二个元素首地址为:" << (int)&arr[0][1] << endl;



	system("pause");

	return 0;
}

总结1:二维数组名就是这个数组的首地址

总结2:对二维数组名进行sizeof时,可以获取整个二维数组占用的内存空间大小

5.3.3 二维数组应用案例

考试成绩统计:

案例描述:有三名同学(张三,李四,王五),在一次考试中的成绩分别如下表,请分别输出三名同学的总成绩

姓名 语文 数学 英语
张三 100 100 100
李四 90 50 100
王五 60 70 80

参考答案:

#include <iostream>
using namespace std;

int main() {

	// 二维数组案例-考试成绩统计

	// 1、创建二维数组
	int scores[3][3] =
	{
		{ 100,100,100 },
		{ 90,50,100 },
		{ 60,70,80 }
	};

	string names[] = { "张三", "李四", "王五" };

	// 2、统计每个人的综合分数
	for (int i = 0; i < sizeof(scores) / sizeof(scores[0]); i++)
	{
		int sum = 0; // 统计分数总和变量
		for (int j = 0; j < sizeof(scores[0]) / sizeof(scores[0][0]); j++)
		{
			sum += scores[i][j];
			cout << scores[i][j] << " ";
		}
		cout << "第" << names[i] << "个人的总分为:" << sum << endl;

	}

	// 成绩数组
	//int arr[3][3] =
	//{
	//	{ 100,100,100 },
	//	{ 90,50,100 },
	//	{ 60,70,80 }
	//};

	//string name[] = { "张三", "李四", "王五" };

	//for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
	//{
	//	int temp = 0;
	//	for (int j = 0; j < sizeof(arr[0]) / sizeof(arr[0][0]); j++)
	//	{
	//		temp += arr[i][j];
	//	}
	//	cout << name[i] << "的成绩为:" << temp << endl;
	//}

	system("pause");

	return 0;
}
这篇关于C++ 二维数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!