c++ - 如何对结构成员使用指针

标签 c++ pointers struct

上周在我的计算机科学课上,我们编写了一个程序,其中包含一个从文件中导入“卡片”的函数,如下所示:

  struct card
  {
  char rank[10];
  char suit[10];
  char color;
  bool dealt;
  char location[12];
  };

.

  void importCard(card deck[])
  {
  ifstream fin;
  fin.open("deck.txt");
  int index;  

  for(index=0;index<52;index++)
  {

  fin >> deck[index].rank;
  fin >> deck[index].suit;

  if(deck[index].suit[0]==('d')||deck[index].suit[0]==('h'))
     {
     deck[index].color='r';
     }
  else
     {
     deck[index].color='b';
     }

  deck[index].dealt=false;
  }
  }

基本上,我在此函数中大量使用点运算符。

现在,我的任务是修改它以使用指针代替所有方括号。但是,如果我使用类似的东西,它就不起作用

fin >> *deckPointer.suit;

因为指针不适用于点运算符。那么,我该如何编写它来遍历所有卡片呢?我知道如何编写它来遍历一张卡片,但我不知道如何让它遍历所有卡片。此外,我不能使用任何其他更高级的工具,如 vector ,所以不建议这样做。此外,我只允许使用++ 和 -- 增加我的指针,不能增加任何其他数量。

最佳答案

指针与点运算符一起工作,错误的是它们的优先级。你可以加上一些括号来修复它:

 fin >> (*deckPointer).suit;

c++ 语法中有一个方便的简写:-> 运算符,结合了指针取消引用和字段访问:

find >> deckPointer->suit;

关于c++ - 如何对结构成员使用指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14882243/

相关文章:

c - 如何使用结构成员作为参数

c++ - OpenCV Point(x,y)代表(列,行)或(行,列)

c++ - 在设备上的线性内存中循环二维数组时将 float* 转换为 char*

c++ - 在构造具有 const 成员的对象时调用另一个构造函数

c++ - 显式共享是什么意思?

c++ - 常量引用包装器

c++ - C 结构定义标准

结构而不是数组的运算符的 C 地址?

c++ - 为什么多线程更新数组没有加速

c++ - 为什么调用没有主体的纯虚方法不会导致链接器错误?