【问题标题】:How to access a field in a struct contained in an array of structs using a pointer to that array? [C++]如何使用指向该数组的指针访问结构数组中包含的结构中的字段? [C++]
【发布时间】:2018-01-25 18:41:05
【问题描述】:

我想使用排序算法按结构中包含的字段之一中的值对结构数组进行排序。让我用一个例子来更好地说明我的观点。

struct person{
    string name;
    int height;
}

person people[10];
person *ptr = people;

基本上,使用此示例,我想使用 ptr 按数组中人员的身高对数组进行排序。

我对指针很陌生,所以它们仍然让我很困惑,而且我一直无法弄清楚如何在不使用 ptr++ 然后 ptr->height 的情况下轻松访问特定结构中的高度字段,这不是如果我想比较数组中两个独立结构的高度,这很有用。我不确定这是否可能

我知道要访问您将使用的数组中的值

*(ptr + [int]);

但这似乎不适用于访问结构中包含的值。以下是我尝试使用的方法

*(ptr + [int]).height;
*(ptr + [int])->height;
*(ptr.height + [int]);

这些都不起作用,我试图研究解决方案,但我做不到。任何能指出我正确方向的东西都将不胜感激。提前谢谢!

【问题讨论】:

  • 如果人们不赞成投票,最好说明原因,以便 OP 改进他/她的问题(赞成)
  • 仙人掌,谢谢!我在表达我的问题方面做得越来越好,但我对术语的了解有限,有时很难让我的问题得到解决。到目前为止,那些回答的人似乎已经理解了我所说的内容,但我会很感激任何关于如何更好地逐个问题的建议,因为沟通是一项非常有价值的技能,我希望以与我的编程技能相同的方式来提高。

标签: c++ arrays pointers struct


【解决方案1】:
int index = 0;
ptr[index].name;
ptr[index].height;

【讨论】:

    【解决方案2】:

    如果我理解正确,您希望使用指针访问数组的元素。在这种情况下,像ptr[i].height 这样简单的东西可以工作。这是一个完整的工作示例

    #include <iostream>
    #include <string>
    
    struct person{
        std::string name;
        int height;
    };
    
    int main()
    {
      person people[10];
      for (int i=0; i<10; i++)
      {
          people[i].height = i;
      }
    
      person *ptr = people;
    
      for (int i=0; i<10; i++)
      {
          std::cout << ptr[i].height << std::endl;
      }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多