0
#include <stdio.h>
#include <stdlib.h>

typedef struct {
    char name[20];
    int age;
} employee;

int main(int argc, char** argv)
{
    struct employee em1 = {"Jack", 19};
    printf("%s", em1.name);
    return 0;
}

这似乎不起作用,因为正如编译器所说,该变量的“struct employee”类型不完整。怎么了?

4

4 回答 4

4

从中删除结构

 struct employee em1 = {"Jack", 19};

你用过

typedef struct
{
char name[20];
int age;
}

目的是不再需要输入 struct 。

于 2013-03-07T23:21:46.800 回答
4

问题是您创建了结构 a typedef,但仍然使用struct.

这将起作用:

 employee em1 = {"Jack", 19};

或删除typedef.

于 2013-03-07T23:21:58.243 回答
0

要使用struct employee em1 = ...,您需要使用标签声明结构。

struct employee /* this is the struct tag */
{
char name[20];
int age;
} em1, em2; /* declare instances */
struct employee em3;

typedef创建一个您在没有struct关键字的情况下使用的类型别名。

typedef struct employee employee;
employee em4;
于 2013-03-07T23:28:25.487 回答
0

由于您已经对结构进行了 typedef,因此无需再次添加 struct 关键字。

typedef struct Employee{
    char name[20];
    int age;
} employee;

int main(int argc, char** argv)
{
    employee em1 = {"Jack", 19};
    printf("%s", em1.name);
    return 0;
}
于 2017-02-02T08:42:10.287 回答