在上下文及头文件均正常的情况下,以下代码打印的结果是(假设运行在 64 位计算机上):
struct st_t { int status; short *pdata; char errstr[32]; }; st_t st[16]; char *p = (char *)(st[2].errstr + 32); printf("%d", (p - (char *)(st)));
Key points: 需要字节对齐的根本原因在于CPU访问数据的效率问题.
如果你非得节省空间,可以安排一下变量的顺序。
FBI Warning: 将指针强制类型转换时,很可能破坏对齐,导致效率下降(on X86) or error(on MIPS)