提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、结构体基础
结构体是我们自己定义的一种数据结构类型,它可以一次性打包一堆数据在函数间传递,并作为函数的参数使用,十分便捷。
1.结构体的定义
我们如果要使用一种结构的话,可以定义一种结构类型,(建议在代码的开头定义)
定义一个结构大致有三种形式
第一种,
定义的结构有名字但没顺便声明之后想用的变量
第二种,
定义的结构有名字也顺便声明之后想用的变量,且其为全局变量,可以直接在函数里修改。而且在main函数里依旧可以在定义自己的本地变量。
第三种,
定义的结构没有有名字声明了之后想用的变量,==注意:==如果没有定义结构名字的话必须声明了之后想用的变量。
2.结构类型变量的声明
在声明一个结构类型变量时struct date和int,double,char的使用方式大致相同。
3.结构体的输入输出
结构内部的函数声明后用today.month的格式输入输出
但通常为了简化代码,也会构建两个函数进行输入输出
4.结构指针
结构类型指针和int,char指针用法差不多,为了让结构类型数据在函数中使用更便捷,我们同样也会使用指针运算和输入输出结构变量,并作为函数参数执行函数。
5.嵌套结构
结构中还可以嵌套其他结构,但被嵌套的结构变量需要在嵌套结构前定义。
6.结构数组
结构也可以以数组的方式声明。
二、typedef
typedef可以给原结构类型名取一个别名,进而可以用别名(aa)来取代原名,在该代码段最后一个单词和typedef之间是原函数名,原名依旧可以正常使用。
这样可以省略过长的数据类型名,同时也可以对不同变量进行进一步区分。
注意:可以给同一种数据类型取多个别名,但是不同别名定义的变量本质相同,并且不能用不同别名定义同一个变量。
三、联合
union和struct的使用方式非常相似,但是union里的变量会占据同一空间,且空间大小为联合中数据类型最大的变量所占空间大小
union的输入输出在同一空间中,所以同样的数据用不同的变量输出可能会出现不同结果,而对其多次输入会覆盖或影响原有数据。
但是union在对判断数据的不同储存类型和不同数据类型的转换输入输出等等有优势。
union的输入输出方式和struct差不多,都是用ar.a的形式。