[問題] char 多種宣告判斷正確與否

看板C_and_CPP (C/C++)作者 (道元博士)時間9年前 (2016/10/02 22:26), 編輯推噓5(5017)
留言22則, 7人參與, 最新討論串1/1
各位大大你們好,最近在寫一些面試考古題, 自己觀念不太好,寫到其中一題,腦袋如同醬糊一般黏死了。 在此求救各位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

10/02 22:32, , 1F
跑一下不就知道了嗎?
10/02 22:32, 1F

10/02 23:09, , 2F
3、6一定是錯的
10/02 23:09, 2F

10/02 23:09, , 3F
3->宣告的空間不夠
10/02 23:09, 3F

10/02 23:10, , 4F
6->根本不是字串陣列
10/02 23:10, 4F

10/02 23:14, , 5F
7 一定是錯的 連 type 都不對了
10/02 23:14, 5F

10/02 23:17, , 6F
2 3 4 6是錯的,至於10我剛剛有試跑一次,是可以編譯的
10/02 23:17, 6F

10/02 23:17, , 7F
講錯,是7,但是我不知道這樣宣告到底算不算對
10/02 23:17, 7F

10/02 23:32, , 8F
1是字串常數,使用上有點限制,請看置底13誡
10/02 23:32, 8F

10/03 02:57, , 9F
真的耶 7 好像真的沒問題 不知道是什麼原因 XD
10/03 02:57, 9F

10/03 03:39, , 10F
這是我的個人理解啦!因為{}是集合用法,那(7)也是一堆
10/03 03:39, 10F

10/03 03:40, , 11F
元素構成的集合,只是這個是只有一個元素的集合,所以
10/03 03:40, 11F

10/03 03:40, , 12F
在邏輯上,這個也行得通,我理解是這樣,有錯請指教
10/03 03:40, 12F

10/03 06:24, , 13F
int i = {7}; 這句也是合法的,我想應該是一樣的道理
10/03 06:24, 13F

10/03 06:24, , 14F
不過是啥道理我就不懂了 XDDD
10/03 06:24, 14F

10/03 07:17, , 15F
list initialization
10/03 07:17, 15F

10/03 07:57, , 16F
樓上,可是我用 -std=c99 耶
10/03 07:57, 16F

10/03 09:30, , 17F
(7) 應該是 compond literal 自動展開的效果, 但標準沒
10/03 09:30, 17F

10/03 09:30, , 18F
有規定這樣用的效果, 應該是 implementation depedent
10/03 09:30, 18F

10/03 09:31, , 19F
的 undefined behaviour, 不算正確 (即使結果沒問題)
10/03 09:31, 19F

10/03 09:32, , 20F
以 coding style 來看, 正確的應該只有 5; 以標準來看 1
10/03 09:32, 20F

10/03 09:33, , 21F
也合法, 但容易出錯 (見置底 13 戒之 4)
10/03 09:33, 21F

10/03 10:11, , 22F
1的話 C++17 變成illegal啦
10/03 10:11, 22F
文章代碼(AID): #1NyHaXd3 (C_and_CPP)
文章代碼(AID): #1NyHaXd3 (C_and_CPP)