社区
C++ 语言
帖子详情
这两个结构体,为什么用sizeof测得的大小会一样呢??
bugzhao
2006-03-06 02:24:51
struct A1
{
int a;
char c1;
char c2;
double d;
};
struct A2
{
//int a;
char c1;
char c2;
double d;
};
int main()
{
cout<<sizeof(A1)<<" "<<sizeof(A2)<<endl
return 0;
}
运行结果为:16 16
可是A2和A1根本不一样啊
...全文
165
6
打赏
收藏
这两个结构体,为什么用sizeof测得的大小会一样呢??
struct A1 { int a; char c1; char c2; double d; }; struct A2 { //int a; char c1; char c2; double d; }; int main() { cout<<sizeof(A1)<<" "<<sizeof(A2)<<endl return 0; } 运行结果为:16 16 可是A2和A1根本不一样啊
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
abblly
2006-03-06
打赏
举报
回复
又是结构对齐,其实CSDN上很多关于这个问题的帖子,可以先搜索,如果找不到再提问。
marenjie
2006-03-06
打赏
举报
回复
字节对齐的关系...结构体的大小一定是其中最宽元素的倍数...
lisypro
2006-03-06
打赏
举报
回复
呵呵,结构体对齐的问题。
fisker0303
2006-03-06
打赏
举报
回复
呵呵,结构体对齐的问题。
bugzhao
2006-03-06
打赏
举报
回复
不好意思,在百度上找到答案了,因为我的编译器设置了#pragma pack(8)
我以为默认是设置为#pragma pack(4)呢
bugzhao
2006-03-06
打赏
举报
回复
更郁闷的是,当把A1、A2中的d变量也屏蔽掉后,即改为:
struct A1
{
int a;
char c1;
char c2;
//double d;
};
struct A2
{
//int a;
char c1;
char c2;
//double d;
};
则最终输出结果变为:
8 2
谁能解释一下这是为什么啊??难道跟编译器的地址对齐有关吗?
《C语言基础》 之 第10章
结构体
课程内容:为什么需要
结构体
、定义一个
结构体
类型、
结构体
变量的声明和定义、
sizeof
测试
结构体
变量字节、
结构体
成员的普通访问方式、使用指针访问
结构体
成员、
结构体
嵌套、
结构体
传参、
结构体
数组。
sizeof
(
结构体
)的分析
一、为什么
结构体
计算这么乱? 答案是字节对齐,计算机存储系统中以Byte为单位存储数据,不同数据类型所占的空间不同,如:整型(int)数据占4个字节,字符型(char)数据占一个字 节, 短整型(short)数据占
两个
...
【C语言】
结构体
的
大小
是如何计算的?(
结构体
对齐)
使用
sizeof
计算
结构体
大小
,影响
结构体
内存
大小
的三种因素,
结构体
的对齐规则详解
C语言中计算
结构体
的
大小
因此我们似乎很容易就能计算出这个结果:4+20+4+4=32字节但事实上
结构体
的
大小
并不是通过这样简单累加计算的。
结构体
内存分配与
sizeof
()
结构体
成员的内存分布与对齐 马国峻 maguojun2005@sina.com 我们先看一道IBM和微软的笔试题: IBM笔试题: struct{ short a1; short a2; short a3; }A; struct{ long a1; short a2; ...
C++ 语言
64,648
社区成员
250,503
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章