我有一个小程序,编译时会抛出以下错误
错误#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/

10-11 00:48