Указатели? Это просто! С++ #1

Так. С вами снова Алексей. Вы думаете, что я буду рассказывать о бинарных деревьях (обещал в прошлой статье)? А вот и нет! Что все структуры да структуры — скучно…

Сегодня я вам расскажу, не побоюсь это слова, самой интересной вещи в С++ — о указателях. Указатели являются краеугольным камнем С++, без них невозможно написание ни одной серьезной программы (даже злосчастные списки реализованы с помощью указателей). Но, к сожалению, при изучении указателей начинающих берет оторопь. И зря! Указатели — это просто!

Свое повествование я, пожалуй, начну с небольшого экскурса в память. «О, боже!» — возопите вы. Но не стоит пугаться — экскурсия будет совсем небольшая и с картинками :).

Для своей работы программа использует оперативную память — там она хранит переменные (много переменных). Вся память состоит из большого оооочень большого количества минимальных ячеек — байтов. Так условно выглядит участок свободной оперативной памяти:

 

memory

Как видим — все выглядит однообразно и неинтересно. Но все веселье начинается с того момента, когда программа решит создать переменную, и её просьбу смиренно выполнит процессор (да-да, такой послушный процессор — нету отдыха ему). Для хранения переменной нужно некоторое количество оперативной памяти, но перед тем как выделить память, процессор уточнит у программы:» А сколько мне выделять байт под вашу переменную?». И правильно сделает! Ведь для различных типов переменных нужно разное количество переменных, что логично. Например, для переменной типа int (целочисленный тип) требуется 4 байта, а для char (символьный) — всего 1 байт.

Допустим, программа создает целочисленную переменную. После этого процессор выделяет какие-то стоящие подряд 4 байта и присваивает им общий адрес (иначе мы не сможем больше найти эту переменную). Выглядит это так:

int

 

Адреса всегда указываются в шестнадцатеричной форме (об этом говорит приставка ). В данном случае 0хА111 — адрес созданной целочисленной переменной. Если мы обратимся по этому адресу, то получим некоторое значение, которое хранится в выделенных 4-х байтах. Создадим еще символьную переменную:

charКак видим, теперь адрес 0хА112 указывает на ячейку содержащую 1 байт. И то, что адреса идут подряд — лишь случайность, скорее даже удача, так как единовременно работает очень много программ, и  они постоянно создают переменные, а значит занимают память. Такие вот процессы протекают в памяти (очень и очень упрощенно).

На этом закончим теоретическую часть и перейдем к самим указателям в С++.

Так как практическая часть будет тоже достаточно массивна, то её оформлю в виде отдельной статьи. Читать вторую часть ->

Спасибо за внимание. До скорой встречи, уважаемые читатели.

Поддержать сайт и автора: Z208212694629
R429062753687
Яндекс деньги - https://money.yandex.ru/to/410013974912682

Подпишись:
На мой канал youtube
На рассылку свежих статей
На группу ВК
На группу в ОК

Понравилась статья? Поделись с друзьями)

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники

Указатели? Это просто! С++ #1: Один комментарий

  1. Уведомление: Указатели? Это просто! С++ #2 | Всего наилучшего — 73!

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