iT邦幫忙

0

c語言struct資料空間大小問題及原型函數

  • 分享至 

  • xImage

在測試時發生的一些問題
附圖https://ithelp.ithome.com.tw/upload/images/20180818/20111148jriBnKoCWM.jpg
Q1:
int 空間不是4byte嗎
而char 不是1byte嗎
那這樣加起來不是應該是34byte??
Q2:
為何在課本上面 常常使用到函數(或副程式)時 會在主程式上面再打一行原型函數
只是小弟在測試時 沒打也沒差呀 那用意是為了甚麼呢

weiclin iT邦高手 4 級 ‧ 2018-08-18 17:50:43 檢舉
Q1: google "struct alignment"
Q2: 程式貼上來看
Richie iT邦好手 10 級 ‧ 2018-08-20 22:48:55 檢舉
36 沒問題呀 QQ
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
Kevin
iT邦新手 1 級 ‧ 2018-08-18 18:13:03
最佳解答

http://zylix666.blogspot.com/2007/10/cstruct.html
文章提到編譯器預設,為了方便運算所以會將大小擴充到預設已4Byte大小為一個單位方便處理。

若要固定大小則
https://ithelp.ithome.com.tw/upload/images/20180818/20110564hG2TpOCL4n.png

weiclin iT邦高手 4 級 ‧ 2018-08-18 18:23:57 檢舉

如果是 2的冪次方 那應該是 64 而不是 36

Kevin iT邦新手 1 級 ‧ 2018-08-18 18:42:12 檢舉

不是總和在擴充,是每個宣告都擴充,實際上是增加4Byte,不足4Byte會自動補上編譯器預設DWORD來去做運算,pack則可已去設定。

Kevin iT邦新手 1 級 ‧ 2018-08-18 18:44:48 檢舉

已修改,這樣就不會誤會了

我要發表回答

立即登入回答