【问题标题】:Is it a definition or a declaration? [duplicate]是定义还是声明? [复制]
【发布时间】:2014-04-12 09:38:13
【问题描述】:
struct foo {
   char name[10];
   char title[10];
   int  salary;
};

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

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

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

【问题讨论】:

    标签: c


    【解决方案1】:

    这是一个声明。它声明了类型struct foo

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

    ——对于一个对象,导致为该对象保留存储空间;

    ——对于函数,包括函数体;101)

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

    【讨论】:

    • 已接受答案。谢谢!
    【解决方案2】:

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

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

    这里是一个声明+变量定义的例子:

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

    【讨论】:

    • 感谢您的回答。 :)
    猜你喜欢
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多