this is probably an essentially trivial thing, but it somewhat escapes me, thus far..
char * a3[2]; a3[0] = \"abc\"; a3[1] = \"def\"; char ** p;
You can't assign to a3, nor can you increment it. The array name is a constant, it can't be changed.
a3
c-faq