c:不允许输入类型名称

时间:2014-11-12 13:50:09

标签: c struct

我创建了这个结构:

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 '->'

有人可以帮我这个吗?

2 个答案:

答案 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));

然后你可以为其成员作出任务。