當前位置:首頁 » 編程語言 » 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");這樣拷貝過去才沒問題。
解釋不好,有問題可追問,謝謝採納

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:640
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:368
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:85
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:310
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:793
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:345
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:213
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:812
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:366
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:593