作者QQ29 (我愛阿蓉)
看板C_and_CPP
標題Re: [問題] struct的data大小是可變的...
時間Thu Feb 26 00:28:40 2009
你好
我剛剛試了一下
我太嫩了 我沒有遇過這種方式
原來您
struct msg *msg_ptr = (struct msg*) malloc(長度+MSG_HEADER_SIZE);
這行加上了長度 是有用意的...
我還在想 你data[]沒給長度我該怎麼assign值給他呢?
不過我不懂的是
struct msg
{
char data[];
int length; //4 bytes
};
寫顛倒 他就compile說error C2229: struct 'msg' 擁有大小為零的不合法陣列
這實在不懂耶..............
還有下面說的 等號那個型態不同可以這樣寫嗎?
我試的結果也不能過...
請指教
剛剛又想印看看 長度
cout<<sizeof(msg_ptr->data);
這也不給我過@@ 這是位什麼呢???
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.207.211
→ james732:data[] 後面是不是少了 ; 呢? 02/26 00:30
→ QQ29:喔喔抱歉 我打錯 改一下 02/26 00:30
※ 編輯: QQ29 來自: 140.113.207.211 (02/26 00:30)
→ QQ29:波文筆誤~ 02/26 00:31
※ 編輯: QQ29 來自: 140.113.207.211 (02/26 00:33)
→ realmeat:倒著寫,過不了,那是一個空位址,指到結構的最尾巴的地方 02/26 00:44
→ realmeat:沒給大小他沒法定位下一個參數位址,so 過不了 02/26 00:54
→ QQ29:那位什麼不能取sizeof呢@@ 02/26 01:06
推 tinlans:讀一下含 C99 標準的 C 語言教科書。 02/26 13:52