2013-03-07 52 views
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'类型。怎么了?从无法打印结构变量

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

回答

4

删除结构你用

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

了无需输入了结构的目的。

4

问题是,你使结构a typedef,但仍然与struct排位。

这将工作:

employee em1 = {"Jack", 19}; 

或删除typedef

+0

删除typedef会导致错误。 – 2013-03-07 23:26:10

+0

没有typedef它会定义一个结构。它只是缺少一个标签 - “typedef struct employee {...} employee;' – teppic 2013-03-07 23:27:28

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; 
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; 
}