平时经常把char*赋值给const char*
于是想当然的以为可以把char**赋值给const char**
结果报错了:
error: cannot initialize a parameter of type 'const char **' with an rvalue of type 'char **'
看以下例子:
int main() {
const char c = 'c';
char* pc;
const char** pcc = &pc; //1: not allowed
*pcc = &c;
*pc = 'C'; //2: modifies a const object
}
//1处的代码就是把char**赋值给const char**
假设它是合法的,那么在下一行中我们就可以通过pcc间接地使pc这个char*指向一个const char,而没有任何强制转换。
这时候//2处的代码就可以修改const char的内容了。
同理还有const int **等。