如下: 又是考查内存对齐和指针理解, 简单东西。
#include <iostream>
using namespace std;
#pragma pack(4)
struct X
{
int a;
char b[3];
short c;
char d[3];
int e;
char f;
char g;
};
int main()
{
X x;
X *p = &x;
cout << sizeof(X) << endl; // 24
cout << (char*)(p + 10) - (char*)p << endl; // 240
cout << (char*)((int *)p + 10) - (char*)p << endl; // 40
cout << (char*)((char *)p + 10) - (char*)p << endl; // 10
return 0;
}
不多说。