我有一个小程序,编译时会抛出以下错误
错误#2168:“+”的操作数具有不兼容的类型“struct agenda”和“int”。
错误2113:“.”的左操作数具有不兼容的类型“int”。
错误#2088:需要左值。
这是我做的代码
#include <stdio.h>
struct agenda{
int order, cellular;
char name[30], last_name[30], street[30], city[30], mail[50];
}contact[10];
int main(void)
{
struct agenda *ptrcontact;
ptrcontact = &contact[0];
(*ptrcontact+3).order = 3;
printf("\n\n %d", (*ptrcontact).order);
return 0;
}
因为它会抛出这些错误以及如何修复它们?
最佳答案
你需要改变
(*ptrcontact+3).order = 3;
到
ptrcontact[3].order = 3;
或者,至少,
(*(ptrcontact+3)).order = 3;
或者,
(ptrcontact + 3)->order = 3;
否则,根据precedence rule,
*
的优先级高于+
,从而导致错误。除此之外,
ptrcontact
是一个指针(指向struct agenda
),可以用作+
运算符的操作数。OTOH,
*ptrcontact
属于struct agenda
类型,不能用作+
运算符的操作数。关于c - 指向数组结构的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28394892/