Re[5]: Инициализация массива строк
От: Bell Россия  
Дата: 10.03.09 08:33
Оценка:
Здравствуйте, winogr, Вы писали:

B>>Некореректность в том, что за счет стандартного преобразования (4.2/2)

B>>в msgs[0] лежит неконстантный указатель на литерал "123".
W>правильнее наверное было бы получить константный указатель
Да, наверное.
W>но и не константный указатель это нормально.
Насколько это нормально — видно из исходного вопроса. ИМХО конечно.

B>>Последующая попытка модификации этого литерала есть не что иное, как неопределенное поведение.

W>Но почему вдруг нельзя модифицировать литерал
W>я всегда считал что литерал это не константа
Это неправильно.

2.13.4/1
A string literal is a sequence of characters (as defined in 2.13.2) surrounded by double quotes, optionally
beginning with the letter L, as in "..." or L"...". A string literal that does not begin with L is an ordinary
string literal, also referred to as a narrow string literal. An ordinary string literal has type “array of n
const char”
and static storage duration (3.7), where n is the size of the string as defined below, and is
initialized with the given characters.
...

Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.