Coo*_*mes 0 c arrays struct pointers
我有一个小程序,在编译时会抛出以下错误
错误#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;
}
Run Code Online (Sandbox Code Playgroud)
因为它会抛出这些错误以及如何修复它们?
你需要改变
(*ptrcontact+3).order = 3;
Run Code Online (Sandbox Code Playgroud)
至
ptrcontact[3].order = 3;
Run Code Online (Sandbox Code Playgroud)
或至少,
(*(ptrcontact+3)).order = 3;
Run Code Online (Sandbox Code Playgroud)
要么,
(ptrcontact + 3)->order = 3;
Run Code Online (Sandbox Code Playgroud)
否则,根据优先规则,*优先级更高+,导致错误.
只是为了添加它,ptrcontact是一个指针(to struct agenda),可以用作操作+符的操作数.
OTOH *ptrcontact属于类型struct agenda,不能用作运算+符的操作数.