在读《C专家编程》这本书的时候,对于19页的类型约束相关内容不是太理解,查阅了stackoverflow上面的相关回答后,总结如下:
举个例子:
char *cp="test";
const char * ccp;
ccp = cp;
这段代码编译不会出错,但是反过来
cp = ccp;
就不可以了。无法从“const char *”转换为“char *”。其实理由也是很简单,防止更改const变量的内容。试想,如果可以正常执行,当改变cp所指向的内容时,则ccp对应的内容也会被改变,此时的const便起不到保护的作用。
但是对于如下的代码,又是为何不可以赋值呢?
char **argv;
const char**p = argv; // compile error
原因其实与上面的问题类似,具体可以参考如下的链接:
Why am I getting an error converting a ‘float**’ to ‘const float**’?