无法打印结构变量

时间:2013-03-07 23:20:03

标签: c struct printf

#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 个答案:

答案 0 :(得分:4)

中删除struct
 struct employee em1 = {"Jack", 19};

您使用了

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

目的是不再需要输入struct。

答案 1 :(得分:4)

问题在于您将结构设为typedef,但仍然使用struct对其进行了限定。

这将有效:

 employee em1 = {"Jack", 19};

或删除typedef

答案 2 :(得分: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;

答案 3 :(得分: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;
}