如何使用指向结构的指针

Posted

技术标签:

【中文标题】如何使用指向结构的指针【英文标题】:How to use pointers into structure 【发布时间】:2020-03-31 14:35:37 【问题描述】:

我有一个结构运动员

struct sportist           
    string name;
    string surname;
    int goals;
    string tim;


这是应该读取值的函数。

 void read(sportist x[],int n)     

    int i;
    for(i=0;i<n;i++)
    

        cout<<"************************************************"<<endl;
        cout<<"Name:";
        cin>>x[i].name;
        cout<<endl<<"Surname:"; 
        cin>>x[i].surname;
        cout<<endl<<"Goals :";
        cin>>x[i].goals;
        cout<<endl<<"Name of the team:";
        cin>>x[i].tim;

    

我的问题是如何使用指针,因为我需要?我的尝试:

 void read(sportist* x,int n)

    int i;
    for(i=0;i<n;i++)
    

        cout<<"************************************************"<<endl;
        cout<<"Name:";
        cin>>x->name;
        cout<<endl<<"Surname:"; 
        cin>>x->surname;
        cout<<endl<<"Goals :";
        cin>>x->goals;
        cout<<endl<<"Name of the team:";
        cin>>x->tim;

    
 

我想要的是按目标数量对运动员和团队的顺序进行排序,然后将它们打印在屏幕上以按弹出顺序对它们进行排序。但是当我调试时它会显示错误。

【问题讨论】:

C++ 确实提供了列表、向量和智能指针(等等)。如果您不必使用 c 样式的数组和原始指针,请不要这样做 我的任务也是使用指针。这就是为什么@RoQuOTriX 您已经在使用指针了。在参数类型中,sportist x[] 等价于 sportist* xsportist* x[]sportist** x 相同。 也许你应该把这个添加到你需要使用指针的问题中;) 定义“使用指针”。你需要传递一个指针,还是一个指针数组? 【参考方案1】:

当您使用数组x[i]i 增加时,您应该注意一点,您正在遍历数组,但是使用指针您应该移动指针,使其指向数组的下一个元素。您应该使用x++;.

看:

void read(sportist* x, int n)

    int i;
    for (i = 0; i < n; i++)
    

        cout << "************************************************" << endl;
        cout << "Name:";
        cin >> x->name;
        cout << endl << "Surname:";
        cin >> x->surname;
        cout << endl << "Goals :";
        cin >> x->goals;
        cout << endl << "Name of the team:";
        cin >> x->tim;
        x++;
    

如果您每次错过x++;,您将在数组的第一个元素中写入输入的数据。

还要注意在函数中声明这个数组 sportist ,如果你声明 sportist* x 而不是 sportist x[num] ,你也必须为它分配内存。

【讨论】:

如何分配内存? @Klea 你应该像这样使用malloc sportist * x=(sportist *)malloc(sizeof(sportist)); 我应该去哪里? @hanie 因为当你定义一个数组时,需要的内存将被保留,但是使用指针它不是那样的。检查这个(***.com/questions/37549594/…)

以上是关于如何使用指向结构的指针的主要内容,如果未能解决你的问题,请参考以下文章

如何初始化指向结构的指针数组?

C语言结构体指针成员所指向的变量如何访问?

调用旧版 C API 时,如何在现代 C++ 中正确地将指向结构的指针转换为指向其他结构的指针?

如何访问 C 中指向列表的指针结构数组?

如何访问指向结构的指针的成员? [复制]

如何在单个语句中拥有指向默认结构对象的指针?