资料合集下载链接:
https://pan.quark.cn/s/472bbdfcd014
前言
在C/C++编程中,数组是我们打交道最多的数据结构之一。而当维度从一维扩展到二维时,许多初学者会感到困惑,尤其是在理解二维数组名到底是什么、它如何与指针共舞以及如何作为函数参数传递等方面。
本文将为您系统性地梳理二维数组的知识点,通过详细的代码案例,揭开二维数组名的“庐山真面目”,让您不仅知其然,更知其所以然。
一、二维数组的定义与初始化
二维数组,本质上是“数组的数组”。它在内存中是连续线性存储的,但逻辑上我们将其视为一个表格(矩阵),拥有行(row)和列(column)。
定义一个二维数组的基本语法是:类型说明符 数组名[行数][列数];
初始化二维数组有以下几种常见方式:
- 1. 分行初始化(推荐):这是最清晰、可读性最高的方式。
- 2. 连续初始化:将所有元素放在一个大括号内,编译器会自动按顺序填充。
- 3. 部分初始化:只初始化部分元素,其余未被初始化的元素将自动置为0。
【代码案例 1:二维数组的三种初始化方式】
#include <iostream>
// 辅助函数,用于打印二维数组
void printArray(int arr[3][3], int rows, int cols) {
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
std::cout << arr[i][j] << " ";
}
std::cout << std::endl;
}
std::cout << "--------------------" << std::endl;
}
int main() {
// 方式一:分行初始化,最清晰可读
// 注意:最后一行初始化后的逗号可加可不加,是合法的
int arr1[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}, // 这个逗号是可选的
};
std::cout << "方式一:分行初始化" << std::endl;
printArray(arr1, 3, 3);
// 方式二:连续初始化
int arr2[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
std::cout << "方式二:连续初始化" << std::endl;
printArray(arr2, 3, 3);
// 方式三:部分初始化
int arr3[3][3] = {
{1}, {4, 5}};
std::cout << "方式三:部分初始化 (未指定元素自动为0)" << std::endl;
printArray(arr3, 3, 3);
return 0;
}
【运行结果】
方式一:分行初始化
1 2 3
4 5 6
7