在C语言中,字符串的表示方式一般有以字符数组的形式出现。
如果使用如下形式定义字符串:
char str[] = "Hello,World.";
str是一个字符数组,在C语言内存模型中有分配内存空间,所以str当中的值可以被修改。
但是如果使用字符指针的形式来声明一个字符变量:
char* str = "Fuck the Pointer.";
上面的语句仅仅是在栈区分配了一个指针str,指向常量区的一个字符串字面值,保存在内存模型的常量区里面,其值无法被修改。