Я новичок в C и хочу выполнить эту задачу: объявить и инициализировать строку, а затем переназначить каждый элемент строки на новое значение.Назначение строки C дает ошибку сегментации
Написание кода таким способом:
char *str = "geeksforgeeks\0";
for (int i = 0; str[i] != '\0'; ++i) {
str[i] = 'a';
}
бросает ошибку сегментации.
Но если я пишу код таким образом:
char string[] = "geeksforgeeks\0";
char *str = string;
for (int i = 0; str[i] != '\0'; ++i) {
str[i] = 'a';
}
программа ведет себя правильно.
Кроме того, этот код:
char str[] = "geeksforgeeks\0";
for (int i = 0; str[i] != '\0'; ++i) {
str[i] = 'a';
}
ведет себя правильно.
В чем разница между этими двумя? Не должно быть эквивалентно?
Почему они должны быть эквивалентными? Что означает 'str' в первой программе? На что он указывает во втором? – immibis
Больше, чем в прошлом месяце, чем у Джона Скита. –
Вам не нужно добавлять ответ на вопрос - вот что такое раздел ответа ... – immibis