这是关于我代码底部的 setCheckInTable 函数。它不会用 -1s 填充整个二维数组,它只是循环两次

This is about the setCheckInTable function at the bottom of my code. It does not populate the entire 2D array with -1s it just loop twice

#include <stdlib.h>
#include <string.h>
#include <stdio.h>

这是主要函数,它不允许我设置充满 -1 的数组我想用调用函数 setCheckInTable() 填充数组;但它没有超过 checkInTable[0][1] 我现在心情不好

int main()
{   

int checkRow = 5;
int checkCol = 2;

int checkInTable[checkRow][checkCol];

setCheckInTable(checkInTable, checkRow, checkCol)

return 0
}

这是功能不正常

void setCheckInTable(int** arr, int rows, int cols){

int i, j;

    for(i = 0; i < rows; i++)
        {
            for(j = 0; j < cols; j++)
            {
                arr[i][j] = -1;
                
                printf("This is i: ");
                printf("%d \n", i);
                printf("This is j: ");
                printf("%d \n", + j);
            }

        }   
}

您将数组与指针混淆了。 虽然在某些情况下数组可以衰减为指针,但它们仍然非常不同:
int[x][y] 类型的对象将占用大小为 x*y*sizeof(int).
的内存 int**类型的对象只会消耗指针大小的内存。

您需要修复函数签名并提供原型:

#include <stdio.h>

void setCheckInTable(int rows, int cols, int arr[][cols]);

int main()
{   
    int checkRow = 5;
    int checkCol = 2;

    int checkInTable[checkRow][checkCol];

    setCheckInTable(checkRow, checkCol, checkInTable);

    return 0;
}


void setCheckInTable(int rows, int cols, int arr[][cols])
{
    int i, j;

    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            arr[i][j] = -1;
            
            printf("This is i, j: %d %d\n", i, j);
        }
    }   
}

输出:

$ gcc -o test test.c -Wextra -Wall
<no errors or warnings>
$ ./test
This is i, j: 0 0
This is i, j: 0 1
This is i, j: 1 0
This is i, j: 1 1
This is i, j: 2 0
This is i, j: 2 1
This is i, j: 3 0
This is i, j: 3 1
This is i, j: 4 0
This is i, j: 4 1
$