推 joefaq:double是8byte int4byte char雖然只有1byte但是實作是4byte 02/24 18:16
推 purpose:一個 double 是 8 bytes 啊 02/24 18:16
我一直以為struct存的是記憶體位置 類似pointer那樣
所以不論你宣告的變數大小 都是存成4byte
那我懂了 還有4byte為一個單位 不可能出現類似19byte這樣
※ 編輯: XYX16888 來自: 140.112.4.181 (02/24 18:19)
推 loveme00835:sizeof(mydata) >= 2*sizeof(double)+sizeof(int)+ 02/24 18:18
→ loveme00835:sizeof(char) 02/24 18:18
※ 編輯: XYX16888 來自: 140.112.4.181 (02/24 18:22)
推 purpose:去翻一下其他書吧 02/24 18:21
我想再問
如果struct內宣告 string name;
那這樣是多大? 因為看書上面是說字串欄位只儲存字串實際存放的位置
※ 編輯: XYX16888 來自: 140.112.4.181 (02/24 18:25)
struct mydata
{
string name;
int age;
}student;
我宣告這樣 sizeof(student); 出來是16
書上也是這樣宣告
結果他印出是8
為什麼我的是16?@@
但是若只宣告
struct mydata
{
string name;
} student;
sizeof(student); 出來是8
代表int age 佔了8byte?有點怪!@@
※ 編輯: XYX16888 來自: 140.112.4.181 (02/24 18:28)
→ loveme00835:不會有人知道它是多少, 要等 compiler 告訴你 02/24 18:27
※ 編輯: XYX16888 來自: 140.112.4.181 (02/24 18:29)
→ loveme00835:你看我上面的式子, 不是等於, 不能這樣算, 管他幾byte 02/24 18:29
→ loveme00835:你寫死就是不對 02/24 18:30
※ 編輯: XYX16888 來自: 140.112.4.181 (02/24 18:34)
→ loveme00835:大小會依照你的系統跟編譯器編譯的模式有關, 還有不要 02/24 18:39
→ loveme00835:相信書上都是對的 02/24 18:39
→ loveme00835:改錯: 依照→和, 很多人看書都直接忽略文字敘述而直接 02/24 18:40
→ loveme00835:跳去看程式碼, 大部分的原因是有東西可以抄, 但是也因 02/24 18:41
→ loveme00835:此容易被寫不好的 code誤導, 重要觀念也學不到, 好好 02/24 18:41
→ loveme00835:看完教科書吧... 02/24 18:41
→ legnaleurc:很多時候這種東西是 compiler 說了算 ... 02/24 19:03
推 werdna:你的是64位元的系統嗎? 02/24 19:17
推 winest:用VC要確保大小的話在前面加#pragma pack( push , 1 ) 02/24 19:52