c++ - 当将二维数组打印到控制台时,值被随机设置

标签 c++ arrays

假设我在 main 函数中创建了一个二维数组:

int board[8][8] = {0};

当我在 MAIN 中使用简单的 FOR 循环将其打印到控制台时,一切正常,并且控制台显示所有元素已设置为 0。

但是,当我尝试将此数组作为参数传递给打印函数(如下所示)时,某些元素被正确设置为 0,而其余元素则变为随机值:

void print_board (int (*array)[8][8]);

int main (){

    int board[8][8] = {0};
    print_board(&board);

return 0;
} 

void print_board (int (*array)[8][8]){
    for (int i = 0; i < 8; i++){
        for (int j = 0; j < 8; j++){
            cout << *array[i][j] << " ";
        }
        cout << endl;
    }
}

我使用了指针和&符号,并尝试用谷歌搜索,但我猜我错过了一些东西。

非常感谢您的帮助!

最佳答案

根据Operator Precedenceoperator[] 的优先级高于operator*。因此 *array[i][j] 相当于 *(array[i][j])。并且 array 是一个指针(指向数组),当 i >= 1 时,array[i] 可能会导致 UB。

你应该将其更改为

cout << (*array)[i][j] << " ";

关于c++ - 当将二维数组打印到控制台时,值被随机设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38181167/

相关文章:

c++ - 按值传递 char 数组

C++ gmock 在命名空间中找不到方法参数的 operator==

javascript - 检索正则表达式匹配组值

c# - 平均列表<int>的最有效方法

C - 在函数之间传递数组得到不同的值

c++ - 在 linux 中使用为 windows 编写的软件库(使用 dll)

c++ - 打开目录功能

c++ - 在 C++ 中取消调试功能的更好方法

arrays - 在字符串数组中查找特定字符/字母的算法?

java - 在 Java 中实现 ArrayList 并获取各个值