#include
int main()
{
char *p="qwert\0";
puts(p);
p[2]='q';
puts(p);
}
因为你的指针指向了字符串常量,字符串常量是不可修改的
你可以改成这样
char a[] = "qwert\0";
char *p=a;
puts(p);
p[2] = 'q';
puts(p);
或者这样
char *p=malloc(100);
strcpy(p,"qwert\0");
puts(p);
p[2] = 'q';
puts(p);
你这么定义的话,指针指向常量字符串,p是常量指针,相当于const char *,无法修改。如果你换成c++的话,编译器就会提示你不能这么定义。
至于常量指针和指针常量这两个概念,你得学下这两个的区别。
指针时不能指向常量字符串的,你可以改用字符数组:
#include <stdio.h>
int main()
{
char p[] = "qwert\0";
puts(p);
p[2] = 'q';
puts(p);
}
常量是不能改的,如果你用c++的String类型就可以改