Why is it not OK to pass `char **` to a function that takes a `const char **` in C?

Viewed 2078

Possible Duplicate:
Why can’t I convert ‘char**’ to a ‘const char* const*’ in C?

I am curious, why can't I pass a char ** to const char ** function? Where as it is OK to pass char * to a const char * function it seems not to be OK to do it with double pointers. I thought it was always ok to add constness (but not ok to drop constness) but now it seems I have been wrong.

Gcc compiler is giving me the errror:

note: expected ‘const char **’ but argument is of type ‘char **’

Here is the code snippet:

int f(const char **a) { }

int main() {
    char *a;
    f(&a);
}

Any ideas?

1 Answers
Related