刷题时遇到一些问题,怕忘,把一些我觉得需要记忆的知识点拿出来分享。
关于C的结构体储存结构---位域.
类似:
源题目:https://www.nowcoder.com/questionTerminal/07adfd96a2364433a6538c9bb0fcda16
#include "pch.h"
#include <iostream>
struct MyStruct
{
int a : 3;
int b : 4;
int c : 5;
double k;
};
int main()
{
std::cout << sizeof(MyStruct);
}
输出结果为16,表明该结构体占用16个字节。
题目中a、b、b分别是3bit、4bit、5bit,int类型4个字节总共32位,三个int类型数据公用一个int,使用4个字节;
double类型8个字节。结构体内变量对齐,前边补4个字节,总共4+4+8=16;所以答案是16。
具体关于位域的解释在http://www.cnblogs.com/bigrabbit/archive/2012/09/20/2695543.html
这个解释很清晰。留存。