Because pch is a const pointer to a non-const object. If you have compiler warnings enabled, you should get something like "initialization discards qualifiers from pointer target type" for pch (referring to the fact that pch should point to a char, but chArr[0] is a const char).
Here's the difference: notice you will also get an error for this, post initialization:
Because pch is a const pointer. This is not the same thing as a pointer to a const value.
Code:
char *const pch; // const pointer to non-const type
const char *pch; // non-const pointer to const type
const char *const pch; // const pointer to const type
The last two will give you an error for *pch = 'A', and get rid of the discarded qualifier warning, because the types match correctly.
BTW, the normal way to initialize a pointer to a char array is:
Code:
char *pch = &chArr[0]; // confusing and unnecessary
char *pch = chArr; // better