[英]Pointer to array structure
我有一个小程序,在编译时会出现以下错误
错误#2168:操作数“ +”具有不兼容的类型“结构议程”和“ 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;
否则,按照优先级规则 , *
优先级高于+
,从而导致错误。
补充一点, ptrcontact
是一个指针( struct agenda
),可以用作+
运算符的操作数。
OTOH, *ptrcontact
是struct agenda
类型,不能用作+
运算符的操作数。
您正在取消引用产生该结构的指针,显然您无法对其添加任何内容。 解引用运算符具有最高优先级,您需要这样执行: (*(ptr + 3)).order
或使用箭头代替星点: (ptr + 3) -> order
错误在(* ptrcontact + 3)行中.order = 3; 和printf(“ \\ n \\ n%d”,(* ptrcontact).order);。 在本说明中,请使用->而不是。 错误将得到解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.