C语言struct,union内存对齐

测试环境:

c 复制代码
#include<stdio.h>
int main(){
 //1字节对齐
 struct XXX{
  unsigned char ch;
  unsigned int in;
  unsigned short si;
 }__attribute__((packed));
 struct XXX xxx;
 printf("%zd\n",sizeof(xxx));//7

 #pragma pack(1)
 struct YYY{
   unsigned char ch;
   unsigned int in;
   unsigned short si;
 };
 struct YYY yyy;
 printf("%zd\n",sizeof(yyy));
 #pragma pack()

 //不进行对齐限制,编译器决定
 //默认对齐方式是采用当前最长的变量的长度作为对齐方式
 struct ZZZ{
   unsigned char ch;
   unsigned int in;
   unsigned short si;
 };
 struct ZZZ zzz;
 printf("%zd\n",sizeof(zzz));//12


 return 0;
}
相关推荐
小灰灰搞电子3 分钟前
Rust可以取代C++么?
开发语言·c++·rust
cat三三7 分钟前
java之异常
java·开发语言
奇树谦9 分钟前
【Qt实战】实现图片缩放、平移与像素级查看功能
开发语言·qt
我命由我1234516 分钟前
Python Flask 开发问题:ImportError: cannot import name ‘Markup‘ from ‘flask‘
开发语言·后端·python·学习·flask·学习方法·python3.11
wjs202419 分钟前
Go 语言指针
开发语言
wuguan_30 分钟前
C#:多态函数重载、态符号重载、抽象、虚方法
开发语言·c#
小信啊啊31 分钟前
Go语言数组与切片的区别
开发语言·后端·golang
计算机学姐43 分钟前
基于php的摄影网站系统
开发语言·vue.js·后端·mysql·php·phpstorm
全栈陈序员1 小时前
【Python】基础语法入门(二十)——项目实战:从零构建命令行 To-Do List 应用
开发语言·人工智能·python·学习