传递多维数组

0x4*_*141 0 c multidimensional-array

我正在尝试制作2x2阵列,将其初始化为0,并将其传递给函数.

我试过用它来初始化它

int array[2][2] = {0}
Run Code Online (Sandbox Code Playgroud)

但只有前5个值为0.

对我来说更大的问题是将数组传递给函数.

二维数组是指向指针的指针吗?所以我应该能够把它传递给;

function(**array);
Run Code Online (Sandbox Code Playgroud)

它是否正确?

当我尝试在函数中访问此数组时,我可以以格式访问它

void function (int **array){
    array[0][2] = choice
}
Run Code Online (Sandbox Code Playgroud)

因为这不起作用,我假设某处我必须定义数组的大小.

谢谢.

Man*_*rse 6

"二维数组是指向右边的指针吗?" - 错了.二维数组就是 - 二维数组; 也就是说,一维数组的数组.

如果要将2x2数组传递给函数,请使用指向2x2数组的指针:

static void function (int (*array)[2][2]){
    //(*array)[0][2] is out of bounds...
    (*array)[1][0] = 3;
}

int main(void) {
    int array[2][2] = {{0}};
    function(&array);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)