亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C語言結構體占字節數問題萬分感謝

C語言結構體占字節數問題萬分感謝

江戶川亂折騰 2019-09-09 19:43:29
今天在刷C語言結構體的一個題,是計算結構體字節數的。搞不清原理,求大佬指點...題:#includeintmain(){typedefstruct{inta;chars[10];}TYPE;TYPEul;inta;chars1[10];printf("%d\n",sizeof(ul));//長度為16}請問為什么結果是16啊?int占4字節,s[10]我原以為占10字節,結果后來知道占1字節。那應該是4+1=5啊。為什么是16呢?
查看完整描述

2 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

不同編譯器和編譯參數,不同操作系統上的結果是一樣的,對于32位cpu,cpu是以32位為單位從內存讀取數據,所以讀取地址如果是4的整數倍,速度會快,如果地址不是4的整數倍,就跨越兩個字,cpu要讀兩次才能把數據讀出來,速度就慢兩倍。
所以c優化編譯器,如果設置的字節邊界優化參數,會自動把數據的地址安排在4整數倍上,結構體長度也設置為4的整數倍,這樣會提高運行速度。
你可以百度一下c的字節對齊和邊界對齊優化
                            
查看完整回答
反對 回復 2019-09-09
  • 2 回答
  • 0 關注
  • 255 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號