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