指向数组结构的指针

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)

因为它会抛出这些错误以及如何修复它们?

Sou*_*osh 6

你需要改变

(*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,不能用作运算+符的操作数.