C 语言中char* 和const char*的区别
的有关信息介绍如下:问题补充说明:有一个函数这样定义 char* findArg(char *){.....}定义一个const char *USERNAME = "su";调用时 char *name = findArg(USERNAME);会报错,说const char *和char*不能转换。但是这样 char *name = (char *)findArg(USERNAME);就OK了是不是见鬼了!
constchar*p="123";
p[1]='3';//会报错
丝然p="456";//不会报错
constchar*只是说指针指向的内容不可变,但指针定合片贵然友叶本身可以再赋值
假设你的程序是
char*findArg(char*s){
在自改德席尽杂口returns;
}
这个时候,你如果传constchar*进去,那么好一些的编译器,会知道,你传回的函数返回值,也是constchar*,也就是指针指向的内容不可写。
所以如果你传进去的是constch血ar*,最好还是把char*name写成constchar*name,因为char*name可以对指针指向的内容进行修改。
用强制转换当然也可以,但是
constchar*name2="123";
char*name=(char*)name2;
如果你对name指向的内容进行改变,如name[2]='4';
"123"是常量,对常量进行修改,你的程序就会发生不可预知的错误
char*findArg(char*){.....}
如果你这个函数,对传入的参数,不会对指针指向的内容进行修改,最好写成char*findArg(constchar*){....}
或constchar*find受口次试Arg(constchar*){....}