Найти в Дзене

Адресные операторы в С++

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

Я предпочитаю не заморачиваться с этим, и стараюсь использовать обычные переменные. Но если в Паскале это возможно почти всегда, то в С/С++ очень многие стандартные функции используют указатели (адресные переменные), так что без изучения этого вопроса “сишникам” не обойтись.

Наиболее часто в С/С++ используются два оператора для работы с указателями:

  • & - получение адреса
  • * - в выражении получает доступ к данным, на которые указывает указатель; в объявлении говорит о том, что это указатель.

Оба этих оператора являются унарными, то есть применяются с одним операндом.

Проще, наверно, будет понять на примере:

С помощью & мы можем получить адрес переменной:

P1 = &iNum;

Теперь в P1 записан адрес переменной iNum.

С помощью * мы можем прочитать значение или записать значение в память по адресу, на который ссылается указатель:

*P2 = 15.5;

Здесь мы по адресу, на который указывает P2, записываем число 15.5. И, поскольку ранее мы получили в P2 адрес переменной fNum, то таким образом мы изменили значение переменной fNum, хотя непосредственно с именем этой переменной мы не работали.

На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.

Наука
7 млн интересуются