【问题标题】:struct typedef in C. Variable or type?C中的struct typedef。变量还是类型?
【发布时间】:2013-08-29 21:31:01
【问题描述】:

所以我想知道这两者的区别。

struct Record {
    int ID,
    char *name
}Student;


typedef struct Record {
    int ID,
    char *name
}Student;

我知道第一个学生是结构变量。 但是第二个中的 Student 是变量还是类型名称?

【问题讨论】:

    标签: c struct typedef


    【解决方案1】:
    typedef struct Record { ... } Student;
    

    这将创建一个新类型 struct Record 以及一个名为 Student 的 typedef。 Studentstruct Record 的别名。这些将是相同的变量声明:

    struct Record studentRecord;
    Student studentRecord;
    

    通常 typedef 将与结构命名相同,以便在声明变量时可以删除 struct 关键字。

    typedef struct Record { ... } Record;
    
    Record record;   // Don't need to write "struct Record".
    

    【讨论】:

      【解决方案2】:

      typedef 的第二个示例中,Student 是类型名称。

      使用typedef,如果删除了typedef 关键字,则类型名称将出现在变量名称出现的位置:

              int var_name;
      typedef int type_name;
      
              struct SomeType { ... } some_var;
      typedef struct SomeType { ... } SomeType;
      

      请记住,在 C 中,typedef 名称是其他类型名称的别名,而不是新类型本身。当您在定义结构类型的同时定义typedef 名称时,正式规则是类型已定义(例如,在类型名称被别名为该类型之前由struct SomeType { ... } 定义(例如,由typedef struct SomeType { ... } SomeType;)。

      【讨论】:

        猜你喜欢
        • 2021-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-19
        • 1970-01-01
        • 2021-03-18
        • 1970-01-01
        相关资源
        最近更新 更多