结构体:
关键字:struct
struct student{
short age;
char name[20];
int *ptr;
};
上面这条语句是一条结构体类型的声明语句
1,结构体内部元素的访问可以通过两种形式:
A、结构体变量的名字.具体元素的名字
B、结构体指针->具体元素的名字
2,结构体的初始化
A、根据数组的套路来初始化数据
B、指定元素的名字来进行初始化
3,结构体作为参数在传入函数的时候,最好用地址,这样的效率更高
4,结构体的大小:
由于系统是32位(所以内存的分析是最大以32位为分析的基数),
根据结构里面的最大元素的大小决定基数为多少(如果超过32位则按照32位分析):
根据基数作为分析内存的规划,如果一片内存所剩的量不够下一个变量使用,
则丢弃后面的内存,重新申请一个新的
5,总结;除开“相同类型的结构体变量可以相互整体赋值”外,其他情况下,
不能整体引用,只能对各个成员分别引用;
6,总结: ->只用于结构体指针访问成员; .点只用于结构体名访问成员;
7,传递地址,使用结构体指针接收,用于访问不做修改;const限制修改,
8,结构体作为参数传递;不能成功修改实参,只能访问;(形参结构体是实参的副本,修改副本不影响实参)
9,结构体作为参数,修改结构体并且返回类型也为结构体;达到修改的目的;
10,传递地址,使用结构体指针接收,用于修改;不使用const限制修改,
11,在结构体中使用字符数组和字符指针来存储字符串的区别
字符数组:字符串的存储在结构体内部的;
结构体总分配总的字节的内存给相应的字符串
字符指针:这里的字符串是存储在编译器认为存储字符串常量的任何地方,
这个结构体中存放的只有地址而已,只分配8分字节;
结构体不为字符串分配任何内存存储空间,
因此访问时是一个未赋值的地址,这时候在输入的时候存在了一个潜在的危险;
因此我们最好是使用字符数组来存储字符串
(相关结构体知识网址:)
https://blog.csdn.net/zw1996/article/details/53844585)
共用体/联合体
关键字:union
1,跟结构体的语法结构一模一样
2,共用体里面元素共享同一片内存
3,共用体的大小由里面占内存最大的那个元素所决定
跟结构体不一样的地方在于内存共享
共用体的应用场景:
互斥的数据,为了节省内存,但是又要有通用性的情境下,我们选择定义共用体
枚举:又称枚举常量
关键字:enum
1,枚举里面的元素的值得初始化是按照默认+1的原则赋值的,
某人首元素从0开始计算
2,枚举里面的元素都是整型数据
3,枚举定义完之后的数据都是常量,不可变
4,枚举类型用来将一类事物统一在一起代表的时候引用
5,枚举类型说到底就是个整型
typedef:
专门用来自定义一种变量的名字
语法格式:
typdef 普通变量的定义语句
这个时候,后面的这个普通变量的名字就变成对应的这个变量的类型的代号
引用的使用注意的地方
1,在typedef定义的类型后面一般要加 _t
2,引用的时候的语法你只需要按照普通变量的声明语句方式就可以
3,typedef定义的类型不能和其他类型组合定义