c++ - 将二维 boolean 值传递给函数

标签 c++ pointers boolean

<分区>

为什么后面的 boolean 值“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 种方法可以将二维数组传递给函数,完全符合 (this answer):

  1. 函数参数是一个二维数组:

    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. 函数参数作为指针指向指针:

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

关于c++ - 将二维 boolean 值传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52177589/

相关文章:

c - 使用指针而不是数组时出现段错误

java - 使用Parse.com指针查询两个类的数据,指针值异常

c - 结构声明和指针在一行中

java - Java 中的 Boolean.TRUE 和 true 有什么区别?

XSLT 1.0 三元 if 的习语?

c++ - 内存栅栏——需要帮助才能理解

c++ - "using namespace std;"在 "#include <foo>"之前

c++ - Boost Spirit x3 未编译

objective-c - 否定存储在 NSNumber 中的 boolean 值

c++ - 尽管随机初始化,但K均值聚类中心每次运行都相同