2013-03-07 59 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; 
}