char *a = "i am a teacher!";
char *b = "you are student!";
如果你使用的是GCC编译器,这两句在编译的时候就会警告,
比如:
warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
如果是字面字符串,实际上是const类型的,应该写成:
const char *a = "i am a teacher!";
const char *b = "you are student!";
也就是说,这种字面字符串,也有叫立即数字符串的,是不允许修改的;如果你一定要修改,应该使用数组:
char a[]= "i am a teacher!";
char b[] = "you are student!";
你改成数组再试一下。
你的b字符串声明成了指针,而后面赋值的内容则保存在程序的常量区,是不允许修改的。
要解决这个问题,把b的声明改成数组形式char b[] = ......
这样,b的意义是字符型数组,数据被要求放在栈中,是可写的内存地址,这样就不会出错了。
在前面加上#pragma GCC diagnostic ignored "-Wwrite-strings"就可以了