关于const char*的例子
#include<stdio.h> int main() { const char *p = "123"; p[1] = '3'; //会报错 p = "456"; //不会报错 printf("%s\n",p); return 0; }
"123"是常量,放在代码区,不可修改,所以需要加上const char *,这样编译的时候,如果直接p[1] = 1,编译器就知道你给const变量赋值,那就报错了。 char *p = "123"; p[1] = '3'; 编译还是能过去的,不报错,但是程序执行的时候,会发生不可预知的错误,因为你对代码区的常量进行了修改。
char *const p 修饰指针为常量 指针指向内容可以是变量~既 p++这样的操作不合法 *p='3' 合法
const char * p 是p指向的内容是常量~p是变量~
~既 p++合法 *p='3' 不合法