K&R C中规定字符串中所有字符和NUL终止符都存储于内存的某个位置。可以修改字符串常量。
但ANSI C中则规定如果对一个字符串常量进行修改,其结果是未定义的。
因此,如果要修改字符串常量,请把它存储在数组中,这样,字符串将存储在普通内存区中,可修改。
#include<stdio.h>
int main(){
char *pstr = "hire";
//pstr[0] = 'f'; //error
puts(pstr);
char str[] = "ha";
str[1] = 'i';
puts(str);
return 0;
}