Надо char const *. Или, еще лучше, char const * const. Первый const означает, что литералы нельзя менять по указателю (k_init[0][0] = '!'), а второй — что нельзя перенацеливать указатели (k_init[0] = "another string") (это я анониму разъясняю)).
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, Bell, Вы писали:
B>> const char *k_init[] = {"cat", "dog", "fish"};//или char * const k_init[] ...
RO>Ну вот ты сам себя запутал.
И правда Но только в комментарии!
RO>А ставить const слева — вредная привычка.
С этим можно спорить, но думаю, не стОит.
ЗЫ
Что мы без вредных привычек?
Любите книгу — источник знаний (с) М.Горький
статическая инициализация вектора строк
От:
Аноним
Дата:
07.06.08 12:11
Оценка:
добрый день.
простой вопрос -- как статически проинициализировать вектор строк? пока что придумал только следующий вариант, но он мне не кажется оптимальным, плюс варнинг выдает (см. ниже).
Массив k_init содержит неконтстантные указатели, а в инициализаторе указаны строковые литералы, которые суть константы. Язык позволяет преобразование "строковый литерал" -> char*, но компилятор напоминает, что это не очень хорошо.
Исправить же эту проблему очень просто: