在C++中使用Array of Structures元素

Mil*_*ani 1 c++

我刚开始学习c ++而且我被困在这里.我做了一个结构

...
struct student{
string name;
int roll;
};
...
Run Code Online (Sandbox Code Playgroud)

然后,我在全球范围内称呼它.student s1[20];在我的主要功能中,我做了类似的事情

...
int count=0;
student *p;
p=s1;
cout<<"Enter the Number of records, you wish to consider.";
cin>>arraySize;
p = new student[arraySize];
while (count!=arraySize) {
    cout<<"Enter name.";
    cin>>*(p+count)->name; //Error comes over here
}
...
Run Code Online (Sandbox Code Playgroud)

我得到的错误信息是Indirection requires pointer operand.有人可以帮我解决这个问题吗?

Cor*_*mer 5

你可以像你一样使用指针算法

(p+count)->name
Run Code Online (Sandbox Code Playgroud)

或更多规范地用于[]索引数组

p[count].name
Run Code Online (Sandbox Code Playgroud)

您收到错误的原因是因为您正在组合*哪个取消引用您的指针,->这也取消引用您的指针.你可以做一个或另一个

(p+count)->name
(*(p+count)).name
Run Code Online (Sandbox Code Playgroud)

虽然正如我所说的可读性,但我更喜欢使用索引表示法 []