在函数中召唤的函数C中使用的2d动态数组参数不起作用

时间:2016-12-12 18:00:07

标签: 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);

任何建议如何修复我的功能/调用它?我只需要计算2 d动态数组的总和

1 个答案:

答案 0 :(得分:1)

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