将二维布尔值传递给函数

Passing a 2-D Boolean to a function

本文关键字:值传 函数 布尔 二维      更新时间:2023-10-16

为什么后面的布尔"mat"的二维地址不能像这样传递给函数?

void generate(bool arr) {
......;
......;
}
int main() {
bool mat[3][3];
generate(mat);
return 0;
}

尝试以下示例 ,然后注意下面的描述:

const int N = 3;
void generate(bool arr[][N]) {
for(int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
{
std::cout << std::boolalpha << arr[i][j] << " ";
}
std::cout << std::endl;
}
}
int main() {
// initialize array
bool mat[N][N] = { {1, 0, 1},
{0, 1, 0},
{1, 0, 1} };
generate(mat);
return 0;
}

输出 :

true false true
false true false
true false true

注意有 3 种方法可以将二维数组完全根据(此答案(传递给函数:

  1. 函数参数是一个2-d数组:

    bool arr[10][10];
    void Func(bool a[][10])
    {
    // ...
    }
    Func(arr);
    
  2. 函数参数是一个指针数组:

    bool *arr[10];
    for(int i = 0;i < 10;i++)
    arr[i] = new bool[10];
    void Func(bool *a[10])
    {
    // ...
    }
    Func(arr);
    
  3. 函数参数与pointerpointer

    bool **arr;
    arr = new bool *[10];
    for(int i = 0;i < 10;i++)
    arr[i] = new bool[10];
    void Func(bool **a)
    {
    // ...
    }
    Func(arr);