#include <iostream>
void processCube(int (*arr)[3][4], int size1) {
int count = 0;
for (int i = 0; i < size1; ++i) {
for (int j = 0; j < 3; ++j) {
for (int k = 0; k < 4; ++k) {
arr[i][j][k] = count++;
}
}
}
}
int main() {
int cube[2][3][4];
processCube(cube, 2);
// 输出验证
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
for (int k = 0; k < 4; ++k) {
std::cout << cube[i][j][k] << " ";
}
}
}
return 0;
}
多维数组初始化注意事项
- 函数参数声明:在函数声明中,对于多维数组作为参数传递,除了第一维可以省略大小外,其他维度必须明确指定大小。例如,
void processCube(int (*arr)[3][4], int size1)
中 arr
声明为指向 int[3][4]
类型的指针,这样编译器才能正确计算数组元素的偏移量。
- 内存连续性:在C++中,多维数组在内存中是按行优先(row - major)顺序存储的。这意味着在初始化时,要按照这个顺序依次填充元素,如代码中从最内层循环开始逐步向外层循环,保证元素按线性位置依次初始化。
- 数组大小匹配:调用函数时传递的数组大小要与函数参数期望的大小一致。如
processCube(cube, 2)
中,传递的第二个参数 2
要与 cube
数组第一维的大小匹配,否则可能导致访问越界等未定义行为。