Почему код ниже дает мне ошибку сегментации.Назначение значения массиву char в C++
int main()
{
char *something = "hello\n";
something[2] = 'a'; // doesn't work
*(something+2) = 'a'; // this doesn't work either
return 0;
}
Но следующий код работает нормально.
int main()
{
char something[] = "hello\n";
something[2] = 'a'; //works fine
*(something+2) = 'a'; //works fine
return 0;
}
«Что-то» переменная является массив символов в обоих так почему я не могу присвоить литеру на третий элемент массива в первом примере?
'char * something =" hello \ n ";' устарел на C++. Фактический тип - 'const char *', который является неизменным (относительно одиночных символов). –
Вы не получили предупреждение об этом коде? – Borgleader
* «Переменная« что-то »является массивом символов в обоих« * - Нет, это только массив символов во втором. –