MST

星途 面试题库

面试题:C语言多维数组指针的运算及应用

给定一个三维数组 `int threeD[2][3][4];`,编写一个函数 `int sum( int (*ptr)[3][4], int size1, int size2, int size3)`,通过指针来计算该三维数组所有元素的和,函数接收一个指向三维数组首元素的指针以及各维度的大小作为参数。并解释在函数内部指针是如何遍历整个三维数组的。
26.5万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>

int sum( int (*ptr)[3][4], int size1, int size2, int size3) {
    int total = 0;
    for(int i = 0; i < size1; i++) {
        for(int j = 0; j < size2; j++) {
            for(int k = 0; k < size3; k++) {
                total += ptr[i][j][k];
            }
        }
    }
    return total;
}

在函数内部,ptr 是一个指向 int [3][4] 类型数组的指针。通过外层循环控制第一维的索引 i,中层循环控制第二维的索引 j,内层循环控制第三维的索引 kptr[i][j][k] 就可以访问到三维数组 threeD 的每个元素,从而实现对整个三维数组的遍历并求和。