#include <stdio.h>void copy(char *p,char *q){? ? while(*p++=*q++);? ? ?printf("%s",p);}int main(){? ? char *a="asd";? ? char *b="sad";? ? copy(a,b);? ? return 0;}我想進行字符串復制,就是把a給復制成b的內容,請問為什么一直出錯?好像提示是內存出問題但我不明白
1 回答
已采納

onemoo
TA貢獻883條經驗 獲得超454個贊
看來你知道“字符串”也就是“字符數組”;也知道數組在這里會隱式轉型為指向其首元素的指針,那么:
代碼中的 "asd"?和 "sad"?這樣直接寫出來的字符串叫作“字符串字面量”——是的,它也是字符數組——但它是不可修改的,一般存在于程序中的只讀數據段中,修改它會導致未定義行為,通常就是崩潰出現“內存不能為?read”之類的提示...
解決辦法是:不要用字符串字面量,而是用普通的字符數組,這就沒有不能修改的問題了
char?a[]?=?"asd"; char?b[]?=?"sad";
- 1 回答
- 0 關注
- 2900 瀏覽
添加回答
舉報
0/150
提交
取消