Указатели. Константный указатель и Указатель на константу

Сайт не является учебником по программированию. Это только небольшой авторский сборник информации в помощь начинающим программистам.

Указатели сложно начинать осваивать, но необходимость их применения очень сильно требуют понимания указателей. Одна из запутанных тем с указателями — это тема указателей на константу и константных указателей. Такие похожие названия и совершенно разный смысл. Новички часто путают или смешивают одно с другим, но давайте разберемся что к чему.

Посмотрим на короткий пример с использованием Константного указателя и Указателя на константу

Чтобы не путаться где что можно и где тут чего нельзя достаточно вспомнить определение указателя. Так как указателем называется адрес памяти, то константный указатель = неизменяемый адрес памяти.
Другое дело если мы не хотим изменять то значение, на которое указывает указатель, но предполагаем, что указатель будет указывать на разные объекты, каждый из которых изменению не подлежит. Таким образом у нас получается изменяемый указатель на неизменяемый объект или просто указатель на константу.
В описанных случаях есть что-то такое, что разрешено и чего не разрешено изменять, но можно запретить любые изменения, запретив менять и адрес и значение по этому адресу. Для такой жесткой привязки используется константный указатель на константу. Это как бы объединение ограничений двух первых вариантов друг с другом.

Каждый из трех описанных вариантов бывает нужен. Сам пример ничего на экран не выводит, так как его задача показать смысл существования таких понятий и помочь разобраться в столь запутанном материале.

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

5 комментариев: Указатели. Константный указатель и Указатель на константу

  • Varelka говорит:

    Когда-то где-то вычитал (у Страуструпа может, не помню) чтобы легче читать код и определятся с синтаксисом при написании (запомнить в общем), нужно читать конструкцию справа налево:

    const int* — указатель(*) на целую(int) константу(const)
    int *const — константный(const) указатель(*) на целое(int)

    как-то так 🙂
    ресурсу и авторам +

  • Марина говорит:

    «Каждый из трех описанных описанных вариантов » — 2 раза слово «описанных») не по теме с++, но все же (=

  • Kordan говорит:

    Значение константного указателя на константу можно изменить с помощью другого указателя

    • admin говорит:

      Ваш пример в упрощённом варианте выглядит так:

      Разумеется, можно изменять переменную, которая не константная, используя указатель.
      Чтобы её не изменять, например случайно, нужно использовать ту самую переменную, которая константный указатель на константу.

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     

Яндекс.Метрика

НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

В свои 20 лет он знал более 9 опеpационных систем и ни одной женщины.

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок