我刚开始学习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.有人可以帮我解决这个问题吗?
你可以像你一样使用指针算法
(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)
虽然正如我所说的可读性,但我更喜欢使用索引表示法 []