如何使用指向结构的指针
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* x
。 sportist* 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/…)以上是关于如何使用指向结构的指针的主要内容,如果未能解决你的问题,请参考以下文章