Lazy loaded image
embedded
c语言-字节对齐专题
Words 598Read Time 2 min
2025-7-23
2025-7-24
type
status
date
slug
summary
tags
category
icon
password

1.字节对齐-华为笔试题

1.1 第一道

1.2 第二道

如果#pragma pack(4)

2.位域

位域(bit-field)是结构体的一种特殊用法,允许你用指定位数来声明一个成员变量,从而节省内存空间。
笔试易错题
注意:
1、位域不能跨字节存储
2、位域不能跨类型存储

3.位域-华为笔试题

解释图:
notion image

4.柔性数组

柔性数组(Flexible Array Member,FAM)是C99标准引入的一种结构体特性,它允许你在结构体的最后定义一个 大小不确定的数组成员。这种数组成员不占结构体本身的静态大小,而是在动态分配结构体内存时额外附加空间,从而支持变长数据结构的实现。
注意:char data[]; 不是 char data[0];。前者是柔性数组成员,后者是合法但非标准的旧式技巧。

注意事项

  1. 柔性数组只能用在结构体的最后一个成员
  1. 结构体大小(sizeof(struct))不包含柔性数组的空间,只包括前面的固定部分。
  1. 必须动态分配内存,且分配时要加上柔性数组需要的额外空间。
  1. C++ 不支持柔性数组(可以用 std::vector 或手动分配内存模拟)。
 
为什么会使用?一个案例说明
之前:
notion image
之后:
notion image
 
上一篇
c语言-字符串操作
下一篇
Linux常用命令

Comments
Loading...