C中sizeof运算符的行为

C中sizeof运算符的行为,第1张

概述我的代码变得异常,如下所示 #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(); 我的代码变得异常,如下所示
#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编译器.
为什么会这样?

解决方法 它被称为 Structure Padding

具有以4字节字对齐开始的数据结构(在具有4字节总线和处理器的cpu上)在围绕存储器以及RAM和cpu之间移动数据时效率更高.

您通常可以使用编译器选项和/或编译指示关闭它,这样做的具体细节取决于您的特定编译器.

希望这可以帮助.

总结

以上是内存溢出为你收集整理的C中sizeof运算符的行为全部内容,希望文章能够帮你解决C中sizeof运算符的行为所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1238084.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存