我创建了这个结构:
typedef struct Adressbook
{
char surname[MAX_CHARS];
char lastname[MAX_CHARS];
char postalCode[MAX_CHARS];
char place[MAX_CHARS];
char street[MAX_CHARS];
char telephoneNumber[MAX_CHARS];
char email[MAX_CHARS];
typedef struct Adressbook *next;
}Adressbook;
这个公共结构指针:
struct Adressbook *Start = NULL;
但是当我尝试在我的计划中执行此操作时:
Start->next = NULL;
我收到此错误:
Error C2273: 'Function format conversion': Inadmissible on the right side of the operator '->'
有人可以帮我这个吗?
答案 0 :(得分:4)
您将struct Adressbook定义为typedef。从那时起,您可以在不指定struct限定符的情况下使用它。
struct Adressbook *Start = NULL;
可以是:
Adressbook *Start = NULL;
此外,您的会员:
typedef struct Adressbook *next;
不应该有typedef关键字。
此外,在访问Start变量的 - >下一个成员之前,您必须确保它是非null;也就是说,为它分配内存。或者你可以做,取决于你的需求:
Adressbook Start;
答案 1 :(得分:1)
从typedef
移除typedef struct Address * next
。此外,您可以简单地声明指针*Start
,如此;
Adressbook *Start = NULL;
您还需要分配内存。 Start->next = NULL;
会出现SEGV错误。
下面;
Start = (Adressbook *) malloc (sizeof (Adressbook));
然后你可以为其成员作出任务。