Вы можете написать такой код из-за «несоответствия в языковом стандарте» языка C. Например,
const char const_buff[] = { 'o','n', 'n', 'm', '\0' }; // OK
char* pArray = const_buff; // not OK
В той же строке он не должен был позволять вам компилировать,
char *p = "onnm";
Но вы можете компилировать, что позволяет вам сделать ошибку, изменяя строку только для чтения.
++ * ( p++)