Is it a definition or a declaration?
本问题已经有最佳答案,请猛点这里访问。
1 2 3 4 5 | struct foo { char name[10]; char title[10]; int salary; }; |
在上面的代码中,它是结构定义还是结构声明?
我在学习C语言的结构,有些书说它是一个声明,有些书说它是一个定义。那到底是什么?
根据我所理解的,声明指定编译器变量的类型和名称,其中定义导致为变量分配内存空间。
这是声明。它声明类型
(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; |