一道C语言笔试题——理解结构体的内存对齐和位域问题
2011-10-29 10:43
423 查看
(Win32平台下在GNU GCC编译器中)
给定结构struct A
{
char t:4;
char k:4;
unsigned short i:8;//short大小为2字节,与之前的8位总共3个字节,补1个字节形成4字节对齐,到此为4字节
unsigned long m;//long大小为4字节
};问sizeof(A) = ?
【标准答案】8
注意:字节对齐还与编译器有关!!!
编译器自身的默认对齐大小。
gcc默认是按4字节对齐的,VC 6.0默认是按8字节对齐。但我们可以在程序中加入预编译指令改变默认对齐大小。
详细原理可参照:
给定结构struct A
{
char t:4;
char k:4;
unsigned short i:8;//short大小为2字节,与之前的8位总共3个字节,补1个字节形成4字节对齐,到此为4字节
unsigned long m;//long大小为4字节
};问sizeof(A) = ?
【标准答案】8
注意:字节对齐还与编译器有关!!!
编译器自身的默认对齐大小。
gcc默认是按4字节对齐的,VC 6.0默认是按8字节对齐。但我们可以在程序中加入预编译指令改变默认对齐大小。
详细原理可参照:
C语言 结构体的内存对齐问题与位域 byxing_hao
编译器与字节对齐byzhangyang0402
相关文章推荐
- C语言 结构体的内存对齐问题与位域
- C语言 结构体的内存对齐问题与位域
- C语言 结构体的内存对齐问题与位域
- C语言 结构体的内存对齐问题与位域
- C语言 结构体的内存对齐问题与位域
- C语言结构体的大小——内存对齐和位域的使用
- C语言 结构体的内存对齐问题与位域
- [C语言]菜鸟的一些理解-结构体,共用体,枚举,位域
- [C语言]菜鸟的一些理解-结构体,共用体,枚举,位域
- 一道笔试题[错排问题]
- 一道微软亚洲工程院C语言笔试题的解答
- c语言中结构体的大小和内存对齐问题
- 一道校招笔试的C语言题目
- C语言结构体初始化出现 too many initializer values 问题
- C语言 文件操作4--文件结构体FILE的理解以及缓冲区再讲
- 一道值类型和引用类型理解的问题
- 解析C语言中结构体struct的对齐问题
- 一道c语言运算符优先级问题
- 一道C语言的问题 - I
- C语言中结构体的内存对齐问题