c - 函数中调用的函数 C 中使用的二维动态数组参数不起作用

标签 c arrays pointers

所以我的数组是:

int **board = (int **)malloc(size * sizeof(int *)); //declaring board
for (int i  = 0; i < size; i++)
    board[i] = (int *)malloc(size * sizeof(int));

我的show score函数是这样的

void showScore(int **arr)
{
    int score = 0;

    for(int i = 0;  i <size; i++)
    {
        for (int j = 0; j < size; j++)
        {
            score += arr[i][j];
        }
    }
    printf("score %d\n\n" , score - 2);


}

我遇到的问题是当我调用它时该函数不起作用

 showScore(&board);

关于如何修复我的函数/调用它有什么建议吗?我所需要的只是计算二维动态数组的总和

最佳答案

您正在将指针的地址传递给以指针作为参数的函数。 “board”变量包含数组中第一个元素的地址(例如,board == &board[0][0])。您应该简单地将“board”传递给您的函数,因为它是指针类型(因为您的函数将其作为参数),而不是传递存储该指针值的数据部分的地址(就像您目前所做的那样)。

关于c - 函数中调用的函数 C 中使用的二维动态数组参数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41106745/

相关文章:

javascript - 返回reduce后的索引和数组

c++ - 数组旋转和删除

c - 有人为 MSP430 的 IAR Embedded Workbench 实现了 __getzone() 吗?

arrays - 如何将 Dataframe 单元格中的逗号分隔值转换为 Julia 中的数组?

C 中 switch 语句中的 case

c++ - 应用于变量名时 * 和 & 的含义是什么?

c - 为什么结构分配适用于结构中的数组

c - 静态数组和动态数组

c - 了解已编译目标文件中 C 函数的大小

c pthreads + valgrind = 内存泄漏 : why?