I am using : $ gcc -dumpversion 4.2.4 $ gcc -dumpmachine x86_64-linux-gnu As expected, the following code does not generate any warnings when compiling with -Wall: int main() { int number = 0; const int * const t = &number; return *t; } However, this code does: int main() { int array[9] = {0}; const int (* const p)[9] = &array; return (*p)[0]; } $ gcc -Wall ./tst2.c ./tst2.c: In function ‘main’: ./tst2.c:7: warning: initialization from incompatible pointer type In order to eliminate this warning, I have to declare array as: const int array[9]; Why is this the case though? In both examples, I am trying to use a const pointer to access a non-const variable for read-only purposes. Isn't this supposed to be OK? Thanks __________________________________________________________________ Looking for the perfect gift? Give the gift of Flickr! http://www.flickr.com/gift/