Ваш код устанавливает a
на указатель на "abc"
, который является буквальными данными, которые нельзя изменить.Ошибка шины возникает, когда ваш код нарушает это ограничение и пытается изменить значение.
Попробуйте вместо этого:
char a[] = "abc";
a[0] = 'c';
Это создает массив символов (в обычном пространстве данных вашей программы)и копирует содержимое строкового литерала в ваш массив. Теперь у вас не должно быть проблем с внесением изменений в него.