看板 C_and_CPP 關於我們 聯絡資訊
各位大大你們好,最近在寫一些面試考古題, 自己觀念不太好,寫到其中一題,腦袋如同醬糊一般黏死了。 在此求救各位QAQ 以下有七種char宣告方式,要選出正確的 (1) char *name = "XYZ WW1B"; (2) char *name[10] = "XYZ WW1B"; (3) char name[7] = "XYZ WW1B"; (4) char *name[8] = "XYZ WW1B"; (5) char name[10] = "XYZ WW1B"; (6) char name = "XYZ WW1B"; (7) char name[10] = {"XYZ WW1B"}; 小弟只覺得(5),(7)是對的,其他錯的又說不清楚理由, 還懇請各位相助,幫忙釐清觀念,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.87.231 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1475418401.A.9C3.html
bibo9901: 跑一下不就知道了嗎? 10/02 22:32
jacky1989: 3、6一定是錯的 10/02 23:09
jacky1989: 3->宣告的空間不夠 10/02 23:09
jacky1989: 6->根本不是字串陣列 10/02 23:10
CoNsTaR: 7 一定是錯的 連 type 都不對了 10/02 23:14
jacky1989: 2 3 4 6是錯的,至於10我剛剛有試跑一次,是可以編譯的 10/02 23:17
jacky1989: 講錯,是7,但是我不知道這樣宣告到底算不算對 10/02 23:17
wtchen: 1是字串常數,使用上有點限制,請看置底13誡 10/02 23:32
CoNsTaR: 真的耶 7 好像真的沒問題 不知道是什麼原因 XD 10/03 02:57
jacky1989: 這是我的個人理解啦!因為{}是集合用法,那(7)也是一堆 10/03 03:39
jacky1989: 元素構成的集合,只是這個是只有一個元素的集合,所以 10/03 03:40
jacky1989: 在邏輯上,這個也行得通,我理解是這樣,有錯請指教 10/03 03:40
CoNsTaR: int i = {7}; 這句也是合法的,我想應該是一樣的道理 10/03 06:24
CoNsTaR: 不過是啥道理我就不懂了 XDDD 10/03 06:24
jfcherng: list initialization 10/03 07:17
CoNsTaR: 樓上,可是我用 -std=c99 耶 10/03 07:57
uranusjr: (7) 應該是 compond literal 自動展開的效果, 但標準沒 10/03 09:30
uranusjr: 有規定這樣用的效果, 應該是 implementation depedent 10/03 09:30
uranusjr: 的 undefined behaviour, 不算正確 (即使結果沒問題) 10/03 09:31
uranusjr: 以 coding style 來看, 正確的應該只有 5; 以標準來看 1 10/03 09:32
uranusjr: 也合法, 但容易出錯 (見置底 13 戒之 4) 10/03 09:33
g0010726: 1的話 C++17 變成illegal啦 10/03 10:11