看板 C_and_CPP 關於我們 聯絡資訊
void reverse(char[]); int main() { char *str="12345"; reverse(str); puts(str); free(str); system("pause"); return 0; } void reverse(char str[]) { unsigned int i,j=strlen(str)-1; for(i=0;i<j;++i,--j) { char temp=str[i]; str[i]=str[j]; str[j]=temp; } } 執行後發生錯誤 爬文後有人說char *str="12345"; 只能讀 不能改 不太明白..會什麼指到的值不能改?! 這個宣告 也是分配一塊記憶體存"12345\0"不是嗎?! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.164.58.27 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1509281194.A.C04.html
xie29: 應該是因爲你丟給str的是ㄧ個字面常數,所以不能改裡面的值 10/29 20:58
stupid0319: 用malloc吧,再strcpy 10/29 20:59
stupid0319: 要強硬改的話要修改分頁檔屬性,很麻煩呢 10/29 21:00
suwako: 你改成char str[] = "12345";就可以了 10/29 21:14
caras: 置底十三誡之第四誡 10/29 22:04
steve1012: 他是constant 當然不能改 10/30 01:15
stupid0319: 當然也不是完全改不了,知道些原理比較好 10/30 01:40
stupid0319: char*字串放哪,char[]放哪,什麼的弄清楚就會了 10/30 01:41
peterwu4: 有時侯,指標就只是指標而已,不要有過多的期望~~ 指過 10/30 10:34
peterwu4: 去而已 10/30 10:34
sss81521: 只能用strcpy swap 10/30 11:14
sss81521: 如果用Char *str 10/30 11:16