如何将指针传递给C中的多维数组?

Syn*_*lar 7 c matrix multidimensional-array

我有一个二维数组,可以使用一个函数:

bool matrix[rows][cols];
func(rows, cols, matrix);

void func(int rows, int cols, bool matrix[rows][cols]) {
    //...
}
Run Code Online (Sandbox Code Playgroud)

但是,只要我尝试matrix修改原始函数:

bool matrix[rows][cols];
func(rows, cols, &matrix);

void func(int rows, int cols, bool *matrix[rows][cols]) {
    //...
}
Run Code Online (Sandbox Code Playgroud)

我收到一个不兼容的指针类型错误.我对此无能为力.

250*_*501 7

bool matrix[rows][cols] 是一个类型的数组数组 bool

bool* matrix[rows][cols]是一个指向bool或简单的类型指针数组的数组bool*.

因此,如果您将函数定义为采用类型数组的数组bool*,则需要传递该类型:

bool* m[row][col];
func( row , col , m );
Run Code Online (Sandbox Code Playgroud)

如果你想要一个指针bool matrix[rows][cols],那么你的方法是不正确的.
指向矩阵的指针具有以下类型:bool (*pmatrix)[rows][cols].因此,使用该类型定义函数并传递矩阵数组的地址:

func( rows , cols , &matrix );
Run Code Online (Sandbox Code Playgroud)