Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.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++;行为古怪的指针_C++_Arrays_Visual Studio_Pointers - Fatal编程技术网

C++ C++;行为古怪的指针

C++ C++;行为古怪的指针,c++,arrays,visual-studio,pointers,C++,Arrays,Visual Studio,Pointers,我有一个指向该类片段实例的2D指针数组。 我这样声明数组: 董事会h: private: typedef std::array<Piece**, Board::BOARD_SIZE> row_type; typedef std::array<row_type, Board::BOARD_SIZE> array_type; array_type* grid; 然而,当我打印出每一方的地址时,我得到了不同的地址!为什么会这样?我是新的C++,所以请对

我有一个指向该类片段实例的2D指针数组。 我这样声明数组:

董事会h:

private:
    typedef std::array<Piece**, Board::BOARD_SIZE> row_type;
    typedef std::array<row_type, Board::BOARD_SIZE> array_type;
    array_type* grid;

然而,当我打印出每一方的地址时,我得到了不同的地址!为什么会这样?我是新的C++,所以请对我放松! 第一个问题:如何打印“两边的地址”

原则上,这行代码

(*grid)[3][3] = &Piece::white;
只需将
Piece::white的地址复制到由存储在网格[3][3]中的地址标识的变量中。地址本身(即,
网格[3][3]
)不应更改,只应更改它所指向的值。

此行不好:

grid = &array_type();
您正在
网格中存储临时对象的地址。任何访问
网格的内容都会受到未定义行为的影响

我建议改成

grid = new array_type();

所以让我直说吧。您有一个指向指向
Piece
s的指针数组的指针。这听起来一点也不疯狂吗?就像我想象的那样,一系列的
片段
s会做得很好。嗯,是的。我不太明白为什么。我想要一个2D指针数组,这样我就只能使用类片段的两个实际实例。显然我做错了,请解释原因!(昨天我开始了C++)抱歉,如果你是C++ C++的新手,你不应该使用这样的指针,比如说,像PieceRow订阅的2014BestMeCudiaDistaCurrimoPoT,而不是拉便宜的照片,帮助这个可怜的老太太穿过C++@ Gopgops这条奇怪的街道,你可以使用中介<代码> TyEuff数组;code>然后
typedef数组片段数组可读性稍微好一点
grid = &array_type();
grid = new array_type();