Разобрать код с указателями - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Если делать так, то приложение крэшится:
    char *str = "71903asgd5";
    *(str+1) = 'd';
Если так, то все нормально:
    char str[] = "71903asgd5";
    *(str+1) = 'd';
Читал в нескольких книжках про указатели, но не могу разобраться. Как я понимаю, вся разница в том, что объявление char str[] дает указатель-константу, а char *str - указатель-переменную.. ну и char str[] = "блаблабла"; выделяет необходимую память. А что происходит в случае char *str = "блаблабла" ? Объясните разницу плз.
char *str = "71903asgd5"; // неинициализированный указатель?

Решение задачи: «Разобрать код с указателями»

textual
Листинг программы
const char * const str = "hello?"; // так не бывает?

Объяснение кода листинга программы

В данном коде присутствует одна строка кода, которая содержит следующие элементы:

  1. Тип данных: const char * const
  2. Переменная: str
  3. Значение переменной: hello? В данном случае, код объявляет указатель на неизменяемый символ (const char) и указывает, что этот указатель является константой (const). Затем, с помощью оператора *, указывается, что этот указатель указывает на строку символов (const char*). Далее, переменная str инициализируется значением hello?. Знак вопроса в конце строки может означать, что строка может быть продолжена, но в данном случае она явно указана как неизменяемая. Важно отметить, что в данном коде нет никаких других элементов, поэтому список можно сразу закрыть.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5