【发布时间】:2014-04-12 09:38:13
【问题描述】:
struct foo {
char name[10];
char title[10];
int salary;
};
在上面的代码中是结构定义还是结构声明?
我正在学习 C 中的结构,有些书说它是一个声明,有些说它是一个定义。那么它到底是什么?
据我了解,声明指定编译器变量的类型和名称是什么,其中定义导致为变量分配内存空间。
【问题讨论】:
标签: c
struct foo {
char name[10];
char title[10];
int salary;
};
在上面的代码中是结构定义还是结构声明?
我正在学习 C 中的结构,有些书说它是一个声明,有些说它是一个定义。那么它到底是什么?
据我了解,声明指定编译器变量的类型和名称是什么,其中定义导致为变量分配内存空间。
【问题讨论】:
标签: c
这是一个声明。它声明了类型struct foo。
(C99, 6.7p5) "声明指定一组标识符的解释和属性。定义 标识符的声明是该标识符的声明:
——对于一个对象,导致为该对象保留存储空间;
——对于函数,包括函数体;101)
——对于枚举常量或 typedef 名称,是(唯一的)声明 标识符。”
【讨论】:
你的理解是正确的。您的代码示例是一种类型的声明。在“C”中,您可以声明一个类型并立即使用它来定义一个变量。
所以你的例子是一个纯粹的声明。
这里是一个声明+变量定义的例子:
struct foo {
char name[10];
char title[10];
int salary;
} var;
【讨论】: