2019-12-09 C 结构体和共用体

2020-01-19  本文已影响0人  GoodWen

1,结构体

类似于java中的 java bean,可以将一些变量封装成一个对象;同样的,在C里面,可以将一些其他的变量封装成一个
结构体。结构体和共用体所 表示的含义是一致的。
用 struct 关键字申明一个结构体 类似于 class 申请一个对象
或者 typedef 进行一个别名


QQ截图20200119112948.png

内存对齐
定义:对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好正好位于他长度的整数倍,也就被称为自然对齐。假如在32位的CPU下,假设一个整数变量的地址为:0X00000004,那他是自然对齐的。


QQ截图20200119112948.png
结构体大小
定义:当结构体需要的内存过大,使用动态内存申请。结构体占用字节数和结构体内字段有关,指针占用内存数就是4/8字节,因此传指针比传值效率更高。
QQ截图20200119112948.png
结构体存储原则
(1)结构体变量中成员的偏移量必须是成员大小的整数倍(0被认为是任何数的整数倍)。

(2)结构体大小必须是所有成员大小的整数倍,也即所有成员大小的公倍数。


QQ截图20200119112948.png

2,共用体

共用体和结构体类似,都是表示一个数据类型的集合,只不过结构体需要的内存开销会更大一点,
共用体:顾名思义,他是共用一个身体,是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型,
您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值,共用体提供了一种使用相同内存位置
的有效方式。
通过 union 关键字定义


QQ截图20200119112948.png

共用体的申明方式


QQ截图20200119112948.png
共用体的大小
QQ截图20200119112948.png
上一篇 下一篇

猜你喜欢

热点阅读