Assume
int a = 1;
int b = 2;
int c = 3;
int * A[3] = {&a, &b, &c};
I wonder why this is allowed:
void arrFunc1(int * const * arg)
{
}
And this one isn't:
void arrFunc2(int const ** arg)
{
}
In a:
int main(void)
{
arrFunc1(A); // OK
arrFunc2(A); // Not OK
return 0;
}
I know the difference between these two. First function will assume that the pointers themselves are constants and cannot be changed, and the second one assumes that the integers, to which these pointers point cannot be changed. But I wonder why the second function is not allowed? I can't see any reason of how this could break anything.