Изменение значения указателя на символ в c приводит к segfault

Следующий код вызывает ошибку сегментации в моей системе. Я не могу понять, почему. Любая помощь будет оценена.

#include<stdio.h>
int main() {
    char * a = "abc";
    *a = 'c';
    printf("%c\n", *a);
    return 0;
}

2 ответа

Стандарт явно перечисляет это как неопределенное поведение в §J.2:

- программа пытается изменить строковый литерал (6.4.5)

Если вы хотите скопировать его в локальный массив, выполните:

char a[] = "abc";

a это массив в стеке, и вы можете изменить его свободно.

Попытка изменить строковый литерал приводит к неопределенному поведению.

Другие вопросы по тегам