int a = 1;
int b = 2;
int c = 3;
int * A[3] = {&a, &b, &c};
我不知道为什么,这是允许的:
void arrFunc1(int * const * arg)
{
}
而且这个人是不是:
void arrFunc2(int const ** arg)
{
}
在a:
int main(void)
{
arrFunc1(A); // OK
arrFunc2(A); // Not OK
return 0;
}
我知道这两者之间的区别。第一个函数将假定指针本身是常量并且不能被改变,第二个函数假定这些指针指向的整数不能被改变。但我想知道为什么第二个功能是不允许的?我看不出有什么理由可以破坏任何东西。
好的,我在提出的“重复问题”中找到了答案。这是解释[这里](http://c-faq.com/ansi/constmismatch.html)感谢大家 – Gattuso
基本上,你可以转换(分配)“T”为“const T”,并且“T *”为'const T *',但是它停在这里,不能再继续下去了,把'T **'改成'const T **',原因在上面的链接中解释。 – Gattuso