- •Глава 7. Указатели
- •Основные понятия
- •Объявление указателей
- •Операция адреса
- •Операция разыменования
- •Инициализация указателей
- •Адресная арифметика
- •Функции и указатели
- •Передача аргументов в функцию по указателю
- •Указатель в качестве возвращаемого значения функции
- •Некоторые особенности использования указателей Нулевые указатели
- •Указатели на тип void
- •Указатели на константу и константные указатели
Глава 7. Указатели
Основные понятия
объявление указателей
операция адреса
операция разыменования
инициализация указателей
Адресная арифметика
Указатели и функции
передача аргументов в функцию по указателю
указатель в качестве возвращаемого значения функции
Некоторые особенности использования указателей
нулевые указатели
указатель на тип void
указатели на константу и константные указатели
Основные понятия
Память компьютера организована таким образом, что любые данные всегда располагаются по определённому адресу и занимают известный объём памяти, измеряемый в байтах. При программировании на языках высокого уровня нет необходимости заботиться о размещении своих данных в памяти, так как эти проблемы решаются компилятором. Тем не менее, на определённых этапах программирования бывает удобнее обращаться к данным, используя их адреса. Для этой цели служат указатели.
Каждая переменная имеет имя и занимает один или несколько байтов памяти (ячейка памяти), в зависимости от её типа. Номер первого байта считается адресом переменной. При использовании имени переменной мы получаем доступ к её значению непосредственно, а при использовании указателей – косвенно.
Подобно тому, как переменная типа char имеет в качестве значения символ, а переменная типа int – целочисленное значение, переменная типа указатель имеет в качестве значения адрес ячейки оперативной памяти. Допустимые значения для переменной-указателя – множество адресов оперативной памяти компьютера. Указатель – это особый вид переменной, значением которой является адрес другой переменной определённого типа. Указатель является одним из наиболее важных понятий языка C++.
Указатель – это переменная, содержащая адрес другой переменной. Переменная-указатель имеет имя, как и любая другая переменная, а также имеет тип, определяющий то, на какие типы данных она может указывать.
Под адресом будем понимать местоположение ячейки памяти. В общем случае сам адрес занимает 4 байта.
Объявление указателей
Итак, указатель – это особый вид переменной, которая хранит адрес ячейки памяти, где может быть записано значение другой переменной. Для него определены понятия константы, переменной, массива. Как и любую переменную, указатель необходимо объявить:
тип_данных * имя_указателя;
где тип_данных – тип, на который будет указывать указатель;
символ звездочка (*) после типа (непосредственно или через пробел) является признаком того, что объявлена переменная-указатель;
имя_указателя – имя переменной-указателя.
Примеры объявления указателей:
int * pi; // указатель на тип int
float *pf; // указатель на тип float
При объявлении более чем одного указателя символ звёздочка ставится перед каждым из них. Указатель может быть объявлен в одном списке с переменными и массивами:
int x, b, *pint, a[10];
но лучше их объявлять отдельно.
В С++ существует общепринятое соглашение – называть переменные-указатели именами, начинающимися с латинской буквы p. Это позволяет сразу увидеть, какие переменные являются указателями, что, в свою очередь, упрощает восприятие программ.