通过指针访问结构中的值? (C++)

Posted

技术标签:

【中文标题】通过指针访问结构中的值? (C++)【英文标题】:Access a value from a struct via a pointer? (C++) 【发布时间】:2010-01-23 08:06:51 【问题描述】:

这是我的结构:

struct Checker

  short row;
  short col;
  unsigned short number;
  short color;
;

现在,我还必须创建另一个结构来表示棋盘:

struct Board

  Checker checkers[2][13]; // Zeroth entry of 13 is not used.
  Checker *grid[8][8]; // each entry holds Null or an address
                       // of an element in the checkers array
;

如果重要的话,checkers[0-1] 代表哪边,[1-12] 是每件的唯一编号。

无论如何,我有一个 8x8 网格,它要么指向 NULL,要么指向一个棋盘格。我想要做的是能够访问该检查器,而不是通过其唯一 ID(例如 checkers[0][5]),而是通过它在网格上的位置。

如何以这种方式访问​​数据成员?我试着总结一下:

宣布了棋盘游戏Board。设置网格,以便我在[0][0] 有一个棋子。这将是checkers[0][1]。因此,我不想做cout <<checkers[0][1].number,而是希望能够在不知道其ID的情况下打印检查器的编号,而是知道该特定检查器位于[0][0]

谢谢。

【问题讨论】:

【参考方案1】:
cout << grid[0][0]->number;

如果网格是指向 Checker 结构的二维指针数组,则 grid[0][0] 是指向该位置 (0, 0) 的 Checker 的指针。 -&gt; 语法取消引用指针,然后访问 number 字段。

如果我误解了您的问题或我的回复失败,请告诉我,我会很乐意删除。晚了。 :)

【讨论】:

请注意x-&gt;y 等价于(*x).y(除非运算符重载起作用)。 但是如果在操作符重载起作用时它们不等价,那就开枪打死这样做的开发人员:-( 好的,它也适用于我。我有一个带有字符串的结构和一个指向该结构的指针。要使用该字符串获得 std::string,我必须创建一个字符串流并使用

以上是关于通过指针访问结构中的值? (C++)的主要内容,如果未能解决你的问题,请参考以下文章

为啥 C++ 允许通过指针访问枚举?

C++ 结构体与类指针

C ++通过索引删除指针向量中的值[关闭]

从 C++ 中的函数返回指针

C++ 指针 vs 数组

指向 C++ 类的 C 结构指针