struct foo {
char name[10];
char title[10];
int salary;
};
在上面的代码中是结构定义还是结构声明?
我正在学习C语言中的结构,有些书说这是一个声明,有些人说这是一个定义。那究竟是什么?
根据我的理解,声明指定编译器变量的类型和名称是什么,其中定义导致为变量分配内存空间。
答案 0 :(得分:4)
这是宣言。它声明了类型struct foo
。
(C99,6.7p5)“声明指定一组标识符的解释和属性。定义 标识符是该标识符的声明:
- 对于一个对象,导致为该对象保留存储;
- 对于一个函数,包括函数体; 101)
- 对于枚举常量或typedef名称,是(唯一)声明 标识符“。
答案 1 :(得分:3)
您的理解是正确的。您的代码示例是类型的声明。在'C'中,您可以声明一个类型并立即使用它来定义变量。
所以你的例子是纯粹的宣言。
以下是声明+变量定义的示例:
struct foo {
char name[10];
char title[10];
int salary;
} var;