2013-03-21 83 views
2

這兩個是一樣的嗎?struct EMPLOYEE {...} em1,em2;或者struct EMPLOYEE {...};

struct EMPLOYEE { 
... 
}; 

int main (void) 
{ 
    //Local Declaration 
    struct EMPLOYEE em1; 
    struct EMPLOYEE em2; 
    ... 

    return 0; 
} 

struct EMPLOYEE { 
... 
}em1,em2; 

如果我用的是後一種情況下,是不需要我,我在前者的情況下沒有宣佈這些結構中的主要功能?

+2

在後一種情況下,這兩個是全局變量。 – 2013-03-21 01:10:12

+1

而在第一種情況下,他們是當地人 – Skeen 2013-03-21 01:11:06

+0

總結起來非常感謝! – 2013-03-21 01:12:10

回答

2
struct EMPLOYEE { 
... 
}; 

定義了一個名爲EMPLOYEE的結構,但不創建任何實例。

struct EMPLOYEE { 
... 
}em1,em2; 

定義結構EMPLOYEE並創建兩個實例稱爲em1em2

0

使用

struct EMPLOYEE { 
... 
}em1,em2; 

然後你可以在主使用它們通過以下方式

int main (void) 
{ 
    em1.memberx = 2; /*assuming memberx is a member of your structure.*/ 
    return 0; 
} 

否則你將有一個像你在你的主要功能例如沒有申報他們。

你有另一種選擇做這樣的:

typedef struct 
{ 
... 
}EMPLOYEE; 

,然後宣佈他們是這樣的:

EMPLOYEE em1; 
EMPLOYEE em2; 

,並在主也使用它們像這樣:

int main (void) 
    { 
     em1.memberx = 2; /*assuming memberx is a member of your structure.*/ 
     return 0; 
    }