2 回答

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
B 選項(xiàng)你應(yīng)該懂的,對吧。? 這就是簡單的用“初始化列表”來初始化數(shù)組。
但我要提醒下:這個(gè) s2 只是個(gè)“字符數(shù)組”,不能當(dāng)作字符串。因?yàn)?s2 中只有這 5 個(gè)字符,沒有結(jié)尾的 '\0',無法構(gòu)成 C 語言中定義的字符串。? s2 作為一個(gè)字符數(shù)組當(dāng)然是合法的,這沒問題。
你還記得我在 35 題(http://idcbgp.cn/wenda/detail/412699)中提到“字符串字面量可以用來初始化字符數(shù)組”吧。? 所以 C 選項(xiàng)是沒問題的。
數(shù)組本身是不能被直接賦值的! 也就是你不能像這樣 s1 = s2 把另一個(gè)數(shù)組 s2 賦值給 s1 數(shù)組。
你應(yīng)該記得“字符串字面量”就是數(shù)組,所以 s1="Ctest" 是不正確的。 其實(shí)這里發(fā)生的事要更復(fù)雜些:這里右側(cè)的字符串字面量同樣會隱式轉(zhuǎn)換為指向首元素的指針,就是說實(shí)際上 s1 是在被試圖用 char 指針賦值。而 s1 是數(shù)組,根本就不能被賦值。
所以 A 選項(xiàng)是錯(cuò)的。
也許你覺得?s1="Ctest" 看起來和 C 選項(xiàng)差不多啊。但關(guān)鍵區(qū)別就是:只能在定義數(shù)組并初始化時(shí)這樣做(參考 C 選項(xiàng)中的解說)
D 選項(xiàng)嘛,你應(yīng)該能夠自己推導(dǎo)了。 等號右側(cè)還是會轉(zhuǎn)換為“指向首元素的指針”,也就是字符指針類型,剛好可以為 s4 作初值。?
還要提醒下:字符串字面量是不可修改的,那么你不能通過指向它的字符指針 s4 來修改這個(gè)字符串中的字符。? 如果你這樣做了,程序在運(yùn)行到此時(shí)通常會出錯(cuò)退出(大概率直接崩潰掉)
順便提一下:前面那個(gè)回答不太正確,s1 是數(shù)組沒錯(cuò)。
順便再黑一下題庫:這個(gè)題目也不嚴(yán)謹(jǐn),應(yīng)該說除了 A 選項(xiàng)是“賦值”外,其余 BCD 都是“初始化”
- 2 回答
- 1 關(guān)注
- 4256 瀏覽
添加回答
舉報(bào)