商城微网站创建,重庆川九建设有限责任公司官方网站,西安做网站推广,博客网站搭建目录 一、原因二、解决办法一三、解决办法二四、解决办法三 一、原因
在C隐式类型转换中提到这个知识点#xff1a;
转换成常量#xff1a;允许将指向非常量类型的指针转换成指向相应的常量类型的指针。…相反的转换并不存在#xff0c;因为它试图删除掉底层const。
这就… 目录 一、原因二、解决办法一三、解决办法二四、解决办法三 一、原因
在C隐式类型转换中提到这个知识点
转换成常量允许将指向非常量类型的指针转换成指向相应的常量类型的指针。…相反的转换并不存在因为它试图删除掉底层const。
这就解释了上面C代码中报的那个错的意思这个HelloWorld是个const char*但是使用char*会存在去改变这个常量的可能性所以直接拒绝这样赋值这么做是为了防止程序员无意识地修改一些不该修改的东西。
这一条与c标准有关c14以后正式抛error在c14以前只会抛出一个warning。
那么我们怎么去消掉这个error上面分析了错误原因是在C中不允许从const char到char的隐式转换那么显然改一改让这个原因不成立就行了下面给出四种解决办法推荐力度基本从上往下递减
二、解决办法一
改变右边既然不给使用隐式转化俺可以使用显式转化
char* array (char*)Hello World三、解决办法二
改变左边
const char* array Hello World不过这种方法在使用二重指针的时候就不方便了所以我更推荐第一种。
四、解决办法三
在C语言中没有这个问题所以可以使用另一种语言编写。