2013-03-21 31 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; 
    }