我正在尝试理解指针,这是我试图实现的K& R中的程序。 该程序是strcpy与KR的代码。
/*strcpy: copy t to s; pointer version 3*/
void strcpy(char *s, char *t){
while(*s++ = *t++)
;
}
为了实现这个程序,我添加了
#include<stdio.h>
int main(){
char *s="abc", *t="ABC" ;
strcpy(s,t);
printf("%s\n",t);
printf("%s\n", s);
return 0;
}
然而,当我运行它时,我遇到了分段错误。我确信我错过了一些东西,但不太确定是什么。
谢谢!
答案 0 :(得分:8)
char *s="abc", *t="ABC" ;
字符串文字不可修改,但是,可以修改char
数组,因此将其更改为:
char s[] ="abc", *t="ABC" ;
答案 1 :(得分:7)
文字字符串值存储在只读存储器页面中;它们无法修改。