#include <stdio.h>
// 计算三维数组所有元素之和的函数
int sumOf3DArray(int arr[][3][4]) {
int sum = 0;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 4; k++) {
sum += arr[i][j][k];
}
}
}
return sum;
}
// 函数参数声明的不同形式及其影响分析:
// 1. int arr[2][3][4]:这种声明方式明确指定了数组每一维的大小,这样做代码更清晰,编译器可以在编译时进行数组边界检查。
// 2. int arr[][3][4]:这种声明方式省略了第一维的大小,在函数调用时可以传入不同长度的第一维数组,但编译器无法对第一维进行边界检查。
// 3. int (*arr)[3][4]:这是将参数声明为指向二维数组(大小为3x4)的指针,与第二种形式功能类似,省略第一维大小,编译器无法对第一维进行边界检查。
// 在C语言中,多维数组按行优先(row-major order)存储,所以以上几种声明方式都不会影响对数组存储顺序的操作,因为都是按照相同的行优先方式访问元素。
int main() {
int arr[2][3][4] = {
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
},
{
{13, 14, 15, 16},
{17, 18, 19, 20},
{21, 22, 23, 24}
}
};
int result = sumOf3DArray(arr);
printf("数组所有元素之和为: %d\n", result);
return 0;
}