gpt4 book ai didi

c - 指向数组结构的指针

转载 作者:太空宇宙 更新时间:2023-11-04 05:18:03 25 4
gpt4 key购买 nike

我有一个小程序在编译时抛出以下错误

error #2168: Operands of '+' have incompatible types 'struct agenda' and 'int'.

error #2113: Left operand of '.' has incompatible type 'int'.

error #2088: Lvalue required.

这是我完成的代码

#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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com