Решил вернуться к СИ и прочитать книгу K&R, и вот опять споткнулся на теме указателей, по логике вроде все понятно, но вот именно с char * и const char * какие-то проблемы.
Давайте я приведу код и покажу что мне все такие не ясно!
Пример 1:
char *pstr = "Hello, world";
*pstr = 'D'; /// При запуске приложения на этом месте вылетит сбой не понятно!
printf(pstr); /// Ну и конечно ничего не выведет, измененную строку я не получу, ой точнее массив из символов
Пример 2:
const char *pstr = "Hello, world";
*pstr = 'D'; /// Сбоя не будет и программа вообще не скомпилируется т.к компилятор сообщит что мы не можем изменять наш константный объект
printf(pstr); /// До сюда дело не дойдет
Пример 3:
char str[] = "Hello, world";
char *pstr = str;
*pstr = 'D'; /// Все ок мы успешно поменяем наш первый элемент массива
printf(pstr); /// Мы получим это: "Dello, world"
Подведем черту над всеми этими примерами: Почему я не могу в первом примере поменять отдельно каждый литерал? (Я же не объявлял объект константным как во втором примере)
P.S Третий пример привел для общей картины чтобы показать что все работает если ввести дополнительный параметр