Re: Инициализация массива строк
От: Bell Россия  
Дата: 10.03.09 07:06
Оценка:
Здравствуйте, 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". Последующая попытка модификации этого литерала есть не что иное, как неопределенное поведение. В твоем случае получился вылет, а могло быть и хуже
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.