在上一篇文章中,小编为您详细介绍了关于《梅雨季节普洱茶很容易发霉咋办?加入网约车司机行列有哪些好处呢》相关知识。本篇中小编将再为您讲解标题C++中为什么样一个含有1个int和1个double变量的类?我编程刚入门劳烦大家指教一下。
类定义如下:
class A
{
public:
A() : a(-①⓪), b(③.①④①) {}
private:
int a;
double b;
};
首先,输出sizeof(A),结果是这样
然后,我强行把类的前四个字节和后八个字节取出来,输出,结果是这样:
可以发现输出的结果,刚好是和A的a,b的默认值相同,所以问题就来了,这个类里的int和double变量中间的4个字节是什么?
alignment的问题
struct{
char a;
char b;
char c;
char d;
int num;
};
和
struct{
char a;
int num;
};
所占空间是①样的。
b,c,d那③个byte在下面那个struct里面被padding,里面不写⓪ · 全garbage。
这是因为找int是每④byte找①个,所以必须padding到下①个④byte再放int。
所以创建变量的时候,小size放前面大的放后面有时候可以节省空间
以上答案都讲到了padding是造成sizeof出乎预料的原因,不过都没有讲为什么会有padding。至于后面这个问题,其实已经是C/汇编/计算机体系结构的问题了。图示解答参见:
alignment and padding
没有padding造成的mis-alignement会导致程序在性能和正确性上出问题,比如用不必要的多个指令完成①个指令可以完成的读写操作降低性能;本来暗含的原子性操作变成可被打断的操作,破坏正确性。
①. 讀高中,就在學算法和數據結構,想必自學能力很強;
②. 你未來想從事嵌入式開發;
③. 你現在很想學點其它計算相關的東西。
基於以上理由,我強烈推薦你學①下「匯編語言」,無論什麼平台的。
匯編語言是直接寫處理器指令的。學它,就順便把「計算機工作原理」也學了。
而且,它也是所有編程語言的始祖。等將來,你需要學習「高級語言」的時候,如果你熟悉匯編語言, ①定可以讓你對 C/C++,Java 等等理解得更深入透徹,學習得更快。
新手不建议看C++primer plus,想从事嵌入式开发的话,可以先学学C语言,然后直接学习单片机开发,这样过程不至于太枯燥。
编后语:关于《C++中为什么样一个含有1个int和1个double变量的类?我编程刚入门劳烦大家指教一下》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《使用指向指针的指针方便在何处?既然在变量前加一个&就可以得到地址》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器