一
char * p = "hello world";
任何试图对字符串中的元素的改变操作都会失败,因为在初始化一个字符串指针的时候,此时的字符串为常量,被定义为只读。
如果想改变其中某个字符的话,可以使用字符数组:
char ch[]={"hello world"};
或者通过使用动态的申请一块区域:
char *p;
p = (char *)malloc(int size);
然后再对申请的区域进行复制:
strcpy(p,"hello world");
二
字符数组并不要求最后一个字符为‘\0‘,但是字符数组在初始化的时候要求最后一个字符必须为 '\0'。
正确的初始化: char a[]={'a','b','\0'};