C 语言中char* 和const char*的区别

const char *p = "123";

p[1] = '3'; // 会报错
p = "456"; // 不会报错

const char * 只是说指针指向的内容不可变,但指针本身可以再赋值

假设你的程序是
char * findArg(char *s) {
return s;
}

这个时候,你如果传const char *进去,那么好一些的编译器,会知道,你传回的函数返回值,也是const char *,也就是指针指向的内容不可写。

所以如果你传进去的是const char *,最好还是把 char *name写成const char *name,因为char *name可以对指针指向的内容进行修改。

用强制转换当然也可以,但是
const char *name2 = "123";
char *name = (char *)name2;
如果你对name指向的内容进行改变,如 name[2] = '4';
"123"是常量,对常量进行修改,你的程序就会发生不可预知的错误

char* findArg(char *){.....}
如果你这个函数,对传入的参数,不会对指针指向的内容进行修改,最好写成 char * findArg(const char *) {....}
或 const char * findArg(const char *) {....}
原文地址:https://www.cnblogs.com/ransn/p/8034841.html