當前位置:首頁 » 編程語言 » c語言的題

c語言的題

發布時間: 2025-03-13 12:45:01

① C語言題目!!

D是錯的,圖片中的下面也有文字說明。下面看看我的詳細解釋:
A選項:
char *ch; ch="abc"; //ch是個指針,"abc"是一個字元串常量,常量是在內存中開辟的一個空間保存的,這個空間是只讀的。語句中把ch指針指向這個常量的賦值是完全正確的。下面一段代碼演示"abc"是只讀常量:
void main()
{
char *ch; ch="abc";
*ch='d'; //程序可以編譯鏈接通過,但是運行到這里程序會非法操作,出現系統提示,內存只能讀
}
B選項:
char ch[]={'a','b','c'}; //這樣賦值也沒錯,程序也能編譯通過,但是你只能把ch當一個字元數組使用,而不能把它當字元串來使用,因為字元串必須用0結尾,你硬是要把它當字元串用,行,但是會出現很多不可意料的事情,比如printf(ch);屏幕上就可能出現:abc後面一堆其它的東西。這個選項錯,是因為題目是問「能給字元串正確賦值」的語句,准確說這是給字元數組賦值而非字元串賦值。
C選項:
char ch[3]="abc";//這是字元串賦值語句,在B中也說了,字元串必須0結尾,但是空間只有3,放入了abc再放不下0了,空間不夠,編譯就不會通過,所以錯了,char ch[4]="abc";就沒問題。
D選項:
char ch[4];ch="abc";//ch空間夠了,但是這是2條語句,char ch[4];已經開辟了空間,ch指向這個大小為4的空間,ch可以理解為一個指針,這個指針和這個4位元組的空間捆綁在一起的,對應關系。ch="abc";同A要把這個指針重新指到另外一個字元串常量,那原先4位元組空間就無主了,這編譯怎麼能讓你通過。這是比較通俗的解釋。正規的解釋是:ch[4]是一個字元數組,字元串常量是不可以這樣直接賦值給字元數組。除非是char ch[4]; strcpy(ch,"abc");這樣拷貝過去才沒問題。
解釋不好,有問題可追問,謝謝採納

熱點內容
怎麼清理手機微信存儲空間 發布:2025-03-13 16:52:08 瀏覽:796
教學直播源碼 發布:2025-03-13 16:52:06 瀏覽:444
代碼是否能進行編譯 發布:2025-03-13 16:48:12 瀏覽:856
sql2005安裝組件 發布:2025-03-13 16:33:54 瀏覽:230
JavastreamList 發布:2025-03-13 16:32:57 瀏覽:124
多sql 發布:2025-03-13 16:09:04 瀏覽:239
按鍵精靈導入腳本失靈 發布:2025-03-13 15:59:15 瀏覽:547
看雪加密與解密 發布:2025-03-13 15:37:56 瀏覽:549
聲音壓縮技巧 發布:2025-03-13 15:33:17 瀏覽:927
圓擬合演算法 發布:2025-03-13 15:33:14 瀏覽:110