Re: [問題] 請教struct宣告問題

看板C_and_CPP (C/C++)作者 (「雄辯是銀,沉默是金」)時間12年前 (2013/10/07 16:25), 編輯推噓4(4017)
留言21則, 7人參與, 最新討論串2/2 (看更多)
這個還真難解釋 int main() { char suit[]; suit[] = "Hearts"; } 你能理解這樣的寫法是有問題的嗎? 若可以, 你的 struct 寫法就類似這樣。 一般是寫這樣 char suit[] = "Hearts"; suit 是 array, 大小是 7, 我想你把這兩種語法搞混了。 不過 char suit[]; 這個是什麼東西, 有版友可以解個疑惑嗎? array 可以不指定大小嗎? 答案這麼簡單, 自己沒先試試看 a.c:4:8: error: array size missing in ‘suit’ char suit[]; compiler 不給過 ※ 引述《youneverknow (睡覺一直想)》之銘言: : 開發平台(Platform): Code Blocks : 額外使用到的函數庫(Library Used): 無 : 問題(Question): : 宣告 struct Card,當中的char陣列無法被拉到main使用 : : 餵入的資料(Input): : 預期的正確結果(Expected Output): : 錯誤結果(Wrong Output): : \card13.cpp||In function 'int main()':| : \card13.cpp|15|error: expected primary-expression before ']' token| : \card13.cpp|16|error: expected primary-expression before ']' token| : ||=== Build finished: 2 errors, 0 warnings (0 minutes, 0 seconds) ===| : 程式碼(Code):(請善用置底文網頁, 記得排版) : http://ideone.com/YlhyBW : 補充說明(Supplement): : 新新手,正在學習中,請多包涵 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.125.239.51

10/07 16:32, , 1F
感謝解惑!
10/07 16:32, 1F

10/07 16:40, , 2F
那是initialization的寫法, compiler會幫你算
10/07 16:40, 2F

10/07 16:40, , 3F
類似 int a[] = {1, 2, 3};
10/07 16:40, 3F

10/07 16:41, , 4F
d 大應該是指如果只有 int a[]; 的時候
10/07 16:41, 4F

10/07 16:50, , 5F
Feis 提到的就是我的疑惑。
10/07 16:50, 5F

10/07 16:51, , 6F
不能這樣寫啊, 會有 unknown size error
10/07 16:51, 6F
※ 編輯: descent 來自: 59.125.239.51 (10/07 16:57)

10/07 17:01, , 7F
只有 struct 最後一個參數可以這樣做...
10/07 17:01, 7F

10/07 17:50, , 8F
我比較想問 他用C寫 "Card deck"不寫成 struct Card deck;
10/07 17:50, 8F

10/07 17:50, , 9F
不會compiler error ....這與我認知與實踐都不同 冏~
10/07 17:50, 9F

10/07 17:53, , 10F
Gway: 他是 C++, 你可以試著用 C 編譯看看
10/07 17:53, 10F

10/07 17:56, , 11F
我印象中只有 C99 允許有兩個以上成員的結構最後一個成員可以
10/07 17:56, 11F

10/07 17:57, , 12F
是不完整的陣列成員 (不用給大小), 但相對會有一些問題
10/07 17:57, 12F

10/07 17:57, , 13F
其他像是 gcc 是將其視為擴充.
10/07 17:57, 13F

10/07 21:04, , 14F
噢噢 誤解d大不好意思orz
10/07 21:04, 14F

10/07 22:28, , 15F
G大,是存成cpp無誤
10/07 22:28, 15F

10/07 23:06, , 16F
Sorry眼殘~感謝。Feis:我就是用C寫才覺得怎跟我結果不同:D
10/07 23:06, 16F

10/07 23:13, , 17F
剛試了一下 f大講的正解 不過struct中不知大小的array 就要靠
10/07 23:13, 17F

10/07 23:14, , 18F
的方法去初始化了 ex: memcpy strcpy 之類的 剛try 過 ~ OK
10/07 23:14, 18F

10/07 23:15, , 19F
還真的沒注意過 感謝f大 ^0^
10/07 23:15, 19F

10/07 23:35, , 20F
@Gway: 這個用法有些陷阱, 最常見的問題是 "通常" 要 malloc
10/07 23:35, 20F

10/07 23:36, , 21F
你要確保你使用的記憶體空間有配置.
10/07 23:36, 21F
文章代碼(AID): #1IKd08wV (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1IKd08wV (C_and_CPP)