大家好,我是林译川,今天我们来聊聊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)了解更多内容。
我是林译川,我们下期再见!
