是定义还是声明?

时间:2014-03-09 09:34:18

标签: c

struct foo {
   char name[10];
   char title[10];
   int  salary;
};

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

我正在学习C语言中的结构,有些书说这是一个声明,有些人说这是一个定义。那究竟是什么?

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

2 个答案:

答案 0 :(得分:4)

这是宣言。它声明了类型struct foo

  

(C99,6.7p5)“声明指定一组标识符的解释和属性。定义   标识符是该标识符的声明:

     

- 对于一个对象,导致为该对象保留存储;

     

- 对于一个函数,包括函数体; 101)

     

- 对于枚举常量或typedef名称,是(唯一)声明   标识符“。

答案 1 :(得分:3)

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

所以你的例子是纯粹的宣言。

以下是声明+变量定义的示例:

struct foo {
     char name[10];
     char title[10];
     int  salary;
} var;