【发布时间】:2025-12-31 13:45:10
【问题描述】:
我有一个小程序,编译时会抛出以下错误
错误 #2168:“+”的操作数具有不兼容的类型“结构议程”和“整数”。
错误 #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?它的contact[0]。您应该尝试类似:(ptrcontact + 3)->order = 3; -
(*ptrcontact+3) 为您提供(结构议程)的任何 ptrcontact 点,并在其中添加 3(int)。 * 的优先级高于 +,因此为了获得第三个索引,您必须编写:*(ptrcontact + 3) 或 ptrcontact[3]。