gpt4 book ai didi

c - 将 3D 数组作为参数传递给 C 中的函数

转载 作者:行者123 更新时间:2023-12-01 23:45:25 25 4
gpt4 key购买 nike

我试图编写一个对 3d 数组的元素求和的函数,但是它一直说我将 3d 数组作为参数传递的行存在问题。我的代码如下:

#include <stdio.h>

int sum3darray(a[][][], size);

main() {
int check[3][3][3]={ 0 };
int size=3;
printf("The sum is %d\n",sum3darray(check,size));
}

int sum3darray(a[][][],size) {
int i,j,k,sum=0;
for(i=0;i<size;i++) {
for(j=0;j<size;j++) {
for(k=0;k<size;k++) {
printf("i=%d, j=%d,k=%d, checkijk=%d ",i,j,k,check[i][j][k]);
sum+=check[i][j][k];
printf("sum=%d\n", sum);
}
}
}
return(sum);
}

编译器将第 3 行和第 11 行标记为问题。任何人都可以帮忙吗?

最佳答案

  • 不能省略类型
  • 您只能省略数组的第一个维度

  • int sum3darray(a[][][], size);

    应该
    int sum3darray(int a[][3][3], int size);

    或者
    int sum3darray(int (*a)[3][3], int size);

    正如@CoolGuy 所指出的,您可以省略原型(prototype)中的参数名称:
    int sum3darray(int (*a)[3][3], int size);

    可以写成
    int sum3darray(int (*)[3][3], int);

    处理多维数组的另一种方法(如果您事先不知道大小)是使用 VLA(谢谢 M Oehm)或手动展平数组, take a look .

    关于c - 将 3D 数组作为参数传递给 C 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29605133/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com