跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

C语言结构体,四种写法,你真的懂了吗?

大家好,我是林译川,今天我们来聊聊C语言中的结构体。结构体是C语言中非常基础,也是非常重要的一个概念。你可能知道结构体可以用来定义复杂的数据类型,但你知道结构体有四种定义方式吗?今天我们就来一次搞懂这四种写法。

四种主要定义方式

1. 带标签名 + typedef

typedef struct tagFilterAssist {
    int id;
    char name[50];
    struct tagFilterAssist *next;  // 可以自引用
} FilterAssist;
  • ✅ 结构体有标签名:tagFilterAssist
  • ✅ 有类型别名:FilterAssist
  • ✅ 支持自引用(链表、树等递归结构)
  • ✅ 两种使用方式都可以

2. 匿名结构体 + typedef

typedef struct {
    int id;
    char name[50];
    double score;
} Student;
  • ❌ 没有结构体标签名
  • ✅ 有类型别名:Student
  • ❌ 不支持自引用
  • ✅ 只能用类型别名使用

3. 带标签名,无 typedef

struct FilterAssist {
    int id;
    char name[50];
};
  • ✅ 有结构体标签名:FilterAssist
  • ❌ 没有类型别名
  • ✅ 支持自引用
  • ⚠️ 每次使用都要加 struct 关键字

4. 匿名结构体,无 typedef(一次性定义)

struct {
    int x;
    int y;
} point1, point2;
  • ❌ 没有标签名
  • ❌ 没有类型别名
  • ❌ 无法创建新的同类型变量
  • ⚠️ 只能在定义时声明变量

总结与拓展

好了,今天我们就聊到这里。结构体的四种定义方式各有特点,选择哪种方式取决于你的具体需求。记住,有自引用必须用标签名,其他情况优先考虑简洁性和团队规范。如果你对C语言还有其他疑问,欢迎访问新派编程网(www.xjpbg.com)了解更多内容。

我是林译川,我们下期再见!

相关文章