求教struct结构体成员变量的问题。谢谢。求教一个struct的问题,程序源码如下:C/C++ code#include iostream
求教struct结构体成员变量的问题。谢谢。
求教一个struct的问题,程序源码如下:
- C/C++ code
#include <iostream>#include <string>using namespace std;union Packed{ char i; short j; int k; long l; float f; double d;};struct MyInfo { char i; // 1 short j; // 2 int k; // 4 long l; // 4 float f; // 4 double d; //8};int main(){ cout<<"sizeof(Packed)="<<sizeof(Packed)<<endl; cout<<"sizeof(MyInfo)="<<sizeof(MyInfo)<<endl; //一共是23个字节,输出确实24个字节。 return 0;} 不明白的地方,通过测试,struct结构体里面每个成员变量的大小都已求出,一共是23个字节,为何输出的时候是24个字节?另,若是把struct结构体里面的成员全部注释掉,sizeof()求出的大小为1,也就是说,里面没有任何内容,它让占有一个字节,为何?
我只知道C++中类中的成员变量,有个叫对齐的操作,目的就是方面计算,提高运算效率,struct结构体有这么一说么?
[解决办法]
struct的内存分配你需要了解
利用位域声明可以节省结构体内存使用率
Google struct 位域
[解决办法]
结构和类都存在对齐的问题。在你这个结构中i后面有一个填充字节。当结构和类没有数据成员时,为了区分不同的实例,编译器会为它们分配一个字节的内存。
