我有這個代碼:
char *ps = "hello";
scanf("%s", ps);
我想寫一個字串,讓我們假裝“a”,指向指標而不使用陣列。嘗試將字串掃描到 ps 會導致錯誤被信號 10: SIGBUS 中斷。我很高興聽到對這種行為的解釋。
uj5u.com熱心網友回復:
指標指向字串文字
char *ps = "hello";
所以這個電話
scanf("%s", ps);
嘗試更改字串文字。
您不能更改字串文字。任何更改字串文字的嘗試都會導致未定義的行為。
來自 C 標準(6.4.5 字串文字)
7 如果這些陣列的元素具有適當的值,則未指定這些陣列是否不同。如果程式試圖修改這樣的陣列,則行為未定義
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/444615.html
上一篇:我將如何檢查如果兩個用戶輸入僅包含數字(計算器程式),我不斷收到運行時錯誤
下一篇:通過函式列印陣列的內容
