C中sizeof运算符的行为

前端之家收集整理的这篇文章主要介绍了C中sizeof运算符的行为前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的代码变得异常,如下所示
#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之间移动数据时效率更高.

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

希望这可以帮助.

原文链接:https://www.f2er.com/c/117696.html

猜你在找的C&C++相关文章