Здравствуйте, winogr, Вы писали:
W>Есть код:
W>W>#include "stdio.h"
W>void main(void)
W>{
W> char *msgs[]={"123"};
W> char *pc;
W> pc=msgs[0];
W> pc[0]='0';
W> printf("%c\n",pc[0]);
W>}
W>
W>вылетает в строке:
W>pc[0]='0';
W>кто может объяснить в чем некорректность?
Некореректность в том, что за счет стандартного преобразования (4.2/2) в msgs[0] лежит неконстантный указатель на литерал "123". Последующая попытка модификации этого литерала есть не что иное, как неопределенное поведение. В твоем случае получился вылет, а могло быть и хуже