[問題] 字元陣列與字元指標的問題

看板C_and_CPP作者 (阿成)時間9年前 (2014/08/17 03:02), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串1/1
請問各位大大 以下程式究竟出了甚麼問題 這個程式主要是把字串做反轉動作 void strrev(char *str) { int head = 0, tail = 0; char ch; char *ptr = str; while (*ptr != '\0') { tail++; ptr++; } tail--; while (head < tail) { ch = *(str+head); *(str+head) = *(str+tail); *(str+tail) = ch; head++; tail--; } } void main() { char str1[] = "ABC123456789"; //如果改成char *str1 = "ABC123456789" //則無法正常執行 strrev(str1); printf("%s\n", str1); } 請問main函式裡面str1[]為什麼改成*str1程式就無法正常執行? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.72.177 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1408215722.A.038.html

08/17 03:15, , 1F
因為 "ABC123456789" 是常數字串, 一般來說不能動它
08/17 03:15, 1F

08/17 03:15, , 2F
char str1[] = "ABC123456789"; 則是另外開了一個陣列
08/17 03:15, 2F

08/17 03:16, , 3F
字串複製進去, 所以改它沒事; 另可參閱置底十三誡之四
08/17 03:16, 3F

08/17 08:46, , 4F
指標直接指到那個字串
08/17 08:46, 4F

08/17 18:08, , 5F
LPH66大大謝謝你^_^
08/17 18:08, 5F
文章代碼(AID): #1Jxwgg0u (C_and_CPP)