type
status
date
slug
summary
tags
category
icon
password
1.字节对齐-华为笔试题
1.1 第一道
1.2 第二道
如果#pragma pack(4)
2.位域
位域(bit-field)是结构体的一种特殊用法,允许你用指定位数来声明一个成员变量,从而节省内存空间。
笔试易错题
注意:
1、位域不能跨字节存储
2、位域不能跨类型存储
3.位域-华为笔试题
解释图:

4.柔性数组
柔性数组(Flexible Array Member,FAM)是C99标准引入的一种结构体特性,它允许你在结构体的最后定义一个 大小不确定的数组成员。这种数组成员不占结构体本身的静态大小,而是在动态分配结构体内存时额外附加空间,从而支持变长数据结构的实现。
注意:char data[];
不是char data[0];
。前者是柔性数组成员,后者是合法但非标准的旧式技巧。
注意事项
- 柔性数组只能用在结构体的最后一个成员。
- 结构体大小(
sizeof(struct)
)不包含柔性数组的空间,只包括前面的固定部分。
- 必须动态分配内存,且分配时要加上柔性数组需要的额外空间。
- C++ 不支持柔性数组(可以用
std::vector
或手动分配内存模拟)。
为什么会使用?一个案例说明
之前:

之后:

- Author:Blinky
- URL:http://preview.tangly1024.com/article/2391c0db-37a0-80d6-be01-c709da03efda
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!