gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:48 24 4
gpt4 key购买 nike

我有这样的功能:

void findScarf1(bool ** matrix, int m, int n, int radius, int connectivity); 

ma​​in 函数中我创建了二维动态数组来传入这个函数

    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}
};

问题是:

findScarf1(matrix, 6, 7, 3, 4);

原因 错误 C2664:“findScarf1”:无法将参数 1 从“bool [6][7]”转换为“bool **”

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

附注抱歉,如果这是重复的问题,但我已经花了 1.5 个小时来解决这个问题

最佳答案

如果您查看数组在内存中的布局方式,并将其与指针到指针“矩阵”的布局方式进行比较,您就会明白为什么不能将矩阵作为指向指针的指针传递。

你的矩阵是这样的:

[ matrix[0][0] | matrix[0][1] | ... | matrix[0][6] | matrix[1][0] | matrix[1][1] | ... ]

A matrix in pointer-to-pointer is like this:

[ matrix[0] | matrix[1] | ... ]  |           |  |           v  |           [ matrix[1][0] | matrix[1][1] | ... ]  v  [ matrix[0][0] | matrix[0][1] | ... ]

You can solve this by changing the function argument:

bool (*matrix)[7]

这使得参数 matrix 成为一个指向数组的指针,这将起作用。


顺便说一下,您拥有的 matrix 变量不是动态的,它完全由编译器声明和初始化,没有任何动态。

关于c++动态数组初始化与声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17566661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com