[問題] 字串指標問題

看板C_and_CPP (C/C++)作者 (.....)時間14年前 (2011/12/22 18:36), 編輯推噓2(2011)
留言13則, 8人參與, 最新討論串1/3 (看更多)
我想請問以下的程式為何會出錯? int main(void) { char *s1 = "ABCDEFG"; s1[0]='D'; return 0; } 如果把char *s1改成char s1[8]就沒問題 所以是代表以指標來只向字串時不能做寫入的動作嗎? 宣告字元陣列跟字元的指標有何差別? 麻煩大家解答一下 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.87.225

12/22 18:38, , 1F
"ABCDEFG"是個const char*
12/22 18:38, 1F

12/22 18:45, , 2F
新手13誡之4 @@
12/22 18:45, 2F

12/22 18:45, , 3F
所以如果以char s1[]來宣告時 會另外開一塊memory來存
12/22 18:45, 3F

12/22 18:46, , 4F
而用char *s1時 是直接指定字串的位址 而造成上述的問題?
12/22 18:46, 4F

12/22 18:49, , 5F
我忘記了.....馬上自d
12/22 18:49, 5F

12/22 18:50, , 6F
這板不能自d XDD
12/22 18:50, 6F

12/22 18:54, , 7F
QQ 麻煩版主了
12/22 18:54, 7F

12/22 19:21, , 8F
有興趣的話,可以用 gcc -S 之類的看看 asm 的差異
12/22 19:21, 8F

12/22 22:27, , 9F
const char* ... 就這樣...
12/22 22:27, 9F

12/23 00:54, , 10F
說起來我覺得13誡真的應該要印起來貼在床頭邊,每次醒來跟
12/23 00:54, 10F

12/23 00:54, , 11F
睡覺時都要看一下,順便在膜拜一下效果會加成。
12/23 00:54, 11F

12/23 09:33, , 12F
吃下去效果加倍
12/23 09:33, 12F

12/23 14:51, , 13F
被程式弄到拉肚子的效果嗎?
12/23 14:51, 13F
文章代碼(AID): #1EymWSgz (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1EymWSgz (C_and_CPP)