作者TimmyDD (道元博士)
看板C_and_CPP
標題[問題] char 多種宣告判斷正確與否
時間Sun Oct 2 22:26:38 2016
各位大大你們好,最近在寫一些面試考古題,
自己觀念不太好,寫到其中一題,腦袋如同醬糊一般黏死了。
在此求救各位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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1475418401.A.9C3.html
1F:推 bibo9901: 跑一下不就知道了嗎? 10/02 22:32
2F:→ jacky1989: 3、6一定是錯的 10/02 23:09
3F:→ jacky1989: 3->宣告的空間不夠 10/02 23:09
4F:→ jacky1989: 6->根本不是字串陣列 10/02 23:10
5F:→ CoNsTaR: 7 一定是錯的 連 type 都不對了 10/02 23:14
6F:→ jacky1989: 2 3 4 6是錯的,至於10我剛剛有試跑一次,是可以編譯的 10/02 23:17
7F:→ jacky1989: 講錯,是7,但是我不知道這樣宣告到底算不算對 10/02 23:17
8F:→ wtchen: 1是字串常數,使用上有點限制,請看置底13誡 10/02 23:32
9F:推 CoNsTaR: 真的耶 7 好像真的沒問題 不知道是什麼原因 XD 10/03 02:57
10F:→ jacky1989: 這是我的個人理解啦!因為{}是集合用法,那(7)也是一堆 10/03 03:39
11F:→ jacky1989: 元素構成的集合,只是這個是只有一個元素的集合,所以 10/03 03:40
12F:→ jacky1989: 在邏輯上,這個也行得通,我理解是這樣,有錯請指教 10/03 03:40
13F:推 CoNsTaR: int i = {7}; 這句也是合法的,我想應該是一樣的道理 10/03 06:24
14F:→ CoNsTaR: 不過是啥道理我就不懂了 XDDD 10/03 06:24
15F:→ jfcherng: list initialization 10/03 07:17
16F:推 CoNsTaR: 樓上,可是我用 -std=c99 耶 10/03 07:57
17F:→ uranusjr: (7) 應該是 compond literal 自動展開的效果, 但標準沒 10/03 09:30
18F:→ uranusjr: 有規定這樣用的效果, 應該是 implementation depedent 10/03 09:30
19F:→ uranusjr: 的 undefined behaviour, 不算正確 (即使結果沒問題) 10/03 09:31
20F:→ uranusjr: 以 coding style 來看, 正確的應該只有 5; 以標準來看 1 10/03 09:32
21F:→ uranusjr: 也合法, 但容易出錯 (見置底 13 戒之 4) 10/03 09:33
22F:推 g0010726: 1的話 C++17 變成illegal啦 10/03 10:11