当前位置:网站首页>C语言 结构体定义方法
C语言 结构体定义方法
2022-08-02 03:22:00 【a只如初见】
结构声明(也见有称做定义一个结构体)是描述结构如何组合的主要方法。
一般形式是:
struct 结构名{
成员列表
};
struct关键词表示接下来是一个结构。
下面归纳几种定义结构体变量的方法。
第一种是最基本最标准的结构体定义,即先定义结构体类型,再定义结构体变量。
struct student{
char no[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
int age; //年龄
};
struct student stu1,stu2; //此时stu1,stu2为student结构体变量
后面再定义新的变量也是struct student做类型名,如 struct student stu3;
第二种 定义结构体类型的同时定义结构体变量。
struct student{
char no[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
int age; //年龄
} stu1,stu2;
此后还可以继续定义student结构体变量,如:
struct student stu3;
第三种 不指定结构体名而直接定义结构体变量。
struct{
char no[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
int age; //年龄
} stu1,stu2;
一般不使用这种方法,因为直接定义结构体变量stu1、stu2之后,就不能再继续定义该类型的变量。
没有typedef的方法都例举完了,后面都是带typedef的方法。
第四种 先定义结构体类型,再定义结构体变量(有结构体名)。
typedef struct student{
char no[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
int age; //年龄
}student_t;
student_t stu1,stu2; //此时stu1,stu2为student结构体变量
struct student stu3;
后面再定义新的变量用student_t 或 struct student 做类型名都可以。
student_t 是一个别名。
第五种 先定义结构体类型,再定义结构体变量(无结构体名)。
typedef struct{
char no[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
int age; //年龄
}student_t;
student_t stu1,stu2; //此时stu1,stu2为student结构体变量
与第四种不同的是后面再定义新的变量只能用student_t 做类型名。
还有一种没有什么价值,相当于typedef白用了呗,效果与第一种方法无异。
typedef struct student{
char no[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
int age; //年龄
};
struct student stu1,stu2; //此时stu1,stu2为student结构体变量
实用情况中,第五种用得最多。
可以将下面这段 定义写在头文件中,供每个包含该头文件的源文件使用,定时变量的时候student_t stu1即可。
typedef struct{
char no[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
int age; //年龄
}student_t;
也可以将下面这段 定义写在头文件中,供每个包含该头文件的源文件使用,定时变量的时候struct student stu1即可,大部分人可能会觉得student_t 比 struct student 看起来更加简便。
struct student{
char no[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
int age; //年龄
};
参考鸣谢:
https://blog.csdn.net/please_fix_/article/details/104595440
https://yum9193.blog.csdn.net/article/details/81190361
https://zhuanlan.zhihu.com/p/521248221
https://wenku.baidu.com/view/4ffde1d6f51fb7360b4c2e3f5727a5e9856a270f.html
边栏推荐
- MySQL中JOIN的用法
- pyppeteer使用样例脚本
- UserWarning:火炬。meshgrid:在以后的版本中,它将被要求通过索引ing argu
- String comparison size in MySQL (date string comparison problem)
- 亚马逊卖家怎么提升转化率
- 磷脂-聚乙二醇-醛基 DSPE-PEG-Aldehyde DSPE-PEG-CHO MW:5000
- IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boo
- 通过PS 2021 将网页图标抠下来
- MySQL分组后排序
- @Autowired与@Resource区别
猜你喜欢

MySQL两阶段提交串讲

DSPE-PEG-Silane,DSPE-PEG-SIL,磷脂-聚乙二醇-硅烷修饰活性基团

活体检测 Adaptive Normalized Representation Learning for GeneralizableFace Anti-Spoofing 阅读笔记

How to check whether a table is locked in mysql

String comparison size in MySQL (date string comparison problem)

磷脂-聚乙二醇-酰肼,DSPE-PEG-Hydrazide,DSPE-PEG-HZ,MW:5000

第十一天&shell脚本

通过PS 2021 将网页图标抠下来

API 低代码开发:接口大师,一套开发、管理和提供接口的产品框架

Freeswitch操作基本配置
随机推荐
DSPE-PEG-Silane, DSPE-PEG-SIL, phospholipid-polyethylene glycol-silane modified active group
Cut out web icons through PS 2021
DSPE-PEG-Silane,DSPE-PEG-SIL,磷脂-聚乙二醇-硅烷修饰活性基团
HCIP-第十天-BGP综合实验
【C语言万字长文】 宏定义 结构体 共用体 内存对齐知识点总结
MySQL分库分表
AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor‘
解决glob()返回文件排序不一致问题&onnx本地按照安装方法
nucleo stm32 h743 FREERTOS CUBE MX配置小记录
redis进行持久化时,有新的写操作将如何解决——写时复制
Monaco Editor 的基本用法
分布式领域最重要的一篇论文,到底讲了什么?
Phospholipid-polyethylene glycol-hydrazide, DSPE-PEG-Hydrazide, DSPE-PEG-HZ, MW: 5000
@Autowired详解[email protected]在static属性上的使用
API 低代码开发:接口大师,一套开发、管理和提供接口的产品框架
亚马逊卖家怎么提升转化率
动态代理工具类
MySQL中JOIN的用法
oracle inner join and outer join
Redis简单学习笔记