#include<stdio.h>struct a{ int x; char y;};int main(){ struct a str; str.x=2; str.y='s'; printf("%d %d %d",sizeof(int),sizeof(char),sizeof(str)); getch(); return 0;}
对于这段代码,我得到了输出:
4 1 8
据我所知,该结构包含一个大小为4的整数变量和一个大小为1的char变量,因此结构a的大小应为5.但是结构的大小为8.
我正在使用visual C编译器.
为什么会这样?
具有以4字节字对齐开始的数据结构(在具有4字节总线和处理器的cpu上)在围绕存储器以及RAM和cpu之间移动数据时效率更高.
您通常可以使用编译器选项和/或编译指示关闭它,这样做的具体细节取决于您的特定编译器.
希望这可以帮助.
总结以上是内存溢出为你收集整理的C中sizeof运算符的行为全部内容,希望文章能够帮你解决C中sizeof运算符的行为所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)