c ++动态数组初始化与声明

Olh*_*iuk 6 c++ dynamic-arrays

我有这样的功能:

void findScarf1(bool ** matrix, int m, int n, int radius, int connectivity); 
Run Code Online (Sandbox Code Playgroud)

main函数中我创建了2d动态数组来传递这个函数

    bool matrix[6][7] = {
    {0, 0, 1, 1, 1, 0, 0},
    {0, 0, 1, 1, 1, 0, 0},
    {0, 0, 1, 1, 1, 0, 0},
    {0, 0, 1, 1, 1, 0, 0},
    {0, 0, 1, 1, 1, 0, 0},
    {0, 0, 1, 1, 1, 0, 0}
};
Run Code Online (Sandbox Code Playgroud)

问题是:

findScarf1(matrix, 6, 7, 3, 4);
Run Code Online (Sandbox Code Playgroud)

导致 错误C2664:'findScarf1':无法将参数1从'bool [6] [7]'转换为'bool**'

如何紧凑地初始化数组(同时声明)?

抱歉,如果这是重复的问题,但我花了1.5个小时搞清楚

Naw*_*waz 2

从技术上讲,二维数组是一维数组的数组。所以它不能转换为指针到指针。不过,它可以转换为指向数组的指针

所以这应该有效:

void findScarf1(bool (*matrix)[7], int m, int n, int radius, int connectivity); 
Run Code Online (Sandbox Code Playgroud)

这里bool (*matrix)[7]声明了一个指向 7 bool 数组的指针

希望有帮助。

  • @GrijeshChauhan:“matrix[i][j]”是绝对正确的语法。事实上,`(*matrix)[i][j]`是错误的!!! (2认同)