关于C#:是定义还是声明?


Is it a definition or a declaration?

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
struct foo {
   char name[10];
   char title[10];
   int  salary;
};

在上面的代码中,它是结构定义还是结构声明?

我在学习C语言的结构,有些书说它是一个声明,有些书说它是一个定义。那到底是什么?

根据我所理解的,声明指定编译器变量的类型和名称,其中定义导致为变量分配内存空间。


这是声明。它声明类型struct foo

(C99, 6.7p5)"A declaration specifies the interpretation and attributes of a set of identifiers. A definition
of an identifier is a declaration for that identifier that:

— for an object, causes storage to be reserved for that object;

— for a function, includes the function body;101)

— for an enumeration constant or typedef name, is the (only) declaration of the
identifier."


你的理解是正确的。您的代码示例是一个类型的声明。在"c"中,您可以声明一个类型并立即使用它来定义一个变量。

所以你的例子是一个纯粹的声明。

下面是一个声明+变量定义的例子:

1
2
3
4
5
struct foo {
     char name[10];
     char title[10];
     int  salary;
} var;