當前位置:首頁 » 編程語言 » 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-17 16:19:21 瀏覽:895
編譯器決定程序運行的操作系統 發布:2025-03-17 16:17:47 瀏覽:702
android單詞 發布:2025-03-17 16:05:31 瀏覽:542
小型公司erp伺服器固定ip 發布:2025-03-17 15:56:52 瀏覽:166
雲伺服器組網方案 發布:2025-03-17 15:45:40 瀏覽:412
php代理商 發布:2025-03-17 15:39:22 瀏覽:108
微信屏幕怎麼設置密碼 發布:2025-03-17 15:25:17 瀏覽:919
虛擬機sql 發布:2025-03-17 14:53:17 瀏覽:270
螺紋M30的編程 發布:2025-03-17 14:51:00 瀏覽:140
java出參 發布:2025-03-17 14:50:54 瀏覽:931