Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将二维数组打印到控制台时,值是随机设置的_C++_Arrays - Fatal编程技术网

C++ 将二维数组打印到控制台时,值是随机设置的

C++ 将二维数组打印到控制台时,值是随机设置的,c++,arrays,C++,Arrays,假设我在主函数中创建了一个二维数组: int board[8][8] = {0}; 当我用一个简单的FOR循环将它打印到控制台时,一切正常,控制台显示所有元素都被设置为0 但是,当我尝试将此数组作为参数传递给print函数(如下所示)时,某些元素被正确设置为0,而其余元素则成为随机值: void print_board (int (*array)[8][8]); int main (){ int board[8][8] = {0}; print_board(&boa

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

int board[8][8] = {0};
当我用一个简单的FOR循环将它打印到控制台时,一切正常,控制台显示所有元素都被设置为0

但是,当我尝试将此数组作为参数传递给print函数(如下所示)时,某些元素被正确设置为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;
    }
}
void打印板(int(*数组)[8][8]);
int main(){
int板[8][8]={0};
打印板(&U板);
返回0;
} 
无效打印板(整数(*数组)[8][8]){
对于(int i=0;i<8;i++){
对于(int j=0;j<8;j++){
cout根据
运算符[]的优先级高于
运算符*
。因此
*数组[i][j]
相当于
*(数组[i][j])
数组
是指向数组的指针,
数组[i]
i>=1
时可能导致UB

你应该把它改成

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

cout您可以将输出更改为
std::cout,这真的很容易…但至少我也学到了一些新东西。非常感谢!@watty原始指针和原始数组已经够令人困惑的了,而原始指针+原始2d数组…我建议您使用
std::array
std::vector
在“现代”中避免它们C++。我明白了。我想我是在努力让它变得更难,但是它本来可以做得更容易。已经被纠正了。仍然感谢操作员优先的有用提示!
void print_board(int array[8][8]){
    for (int i = 0; i < 8; i++){
        for (int j = 0; j < 8; j++){
            std::cout << array[i][j] << " ";
        }
        std::cout << std::endl;
    }
}


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