您的位置首页百科问答

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

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

的有关信息介绍如下:

问题补充说明:有一个函数这样定义 char* findArg(char *){.....}定义一个const char *USERNAME = "su";调用时 char *name = findArg(USERNAME);会报错,说const char *和char*不能转换。但是这样 char *name = (char *)findArg(USERNAME);就OK了是不是见鬼了!

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

constchar*p="123";

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

丝然p="456";//不会报错

constchar*只是说指针指向的内容不可变,但指针定合片贵然友叶本身可以再赋值

假设你的程序是

char*findArg(char*s){

在自改德席尽杂口returns;

}

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

所以如果你传进去的是constchar*,最好还是把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*){....}