#include <stdio.h>
#include <stdlib.h>
int main(void){
char *ptr = "Linux";
char c = 'T';
*ptr = c;
printf("\n [%s] \n", ptr);
system("pause");
//return 0;
}
这样写是错误的,当改成char ptr[] = "Linux";时,输出的结果是正确的。
常量字符串存在静态区域,ptr指针指向的东西不可更改,prt[0] = 'c' 正在试图更改只读内存的值
下图中的做法也是错误的:
#include <iostream>
using namespace std;
#include <cstdio>
#include <cstdlib>
void replace(char* s,char *t){
for(int i = 0;s[i] && t[i];i++)
s[i] = t[i];
printf("%s\n",s);
}
int main(){
//char s[10],t[10];
//scanf("%s%s",s,t);
// replace(s,t);
replace("aba","abc");
system("pause");
}<span style="color:#ff0000;">
</span>
改造如下:
下面的程序是正确的
#include <iostream>
using namespace std;
#include <cstdio>
#include <cstdlib>
void replace(char* s,char *t){
for(int i = 0;s[i] && t[i];i++)
s[i] = t[i];
printf("%s\n",s);
}
int main(){
char s[10],t[10];
scanf("%s%s",s,t);
replace(s,t);
//replace("aba","abc");
system("pause");
}