Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГЛАВА 7 Указатели.doc
Скачиваний:
25
Добавлен:
29.02.2016
Размер:
143.36 Кб
Скачать

Глава 7. Указатели

Основные понятия

  • объявление указателей

  • операция адреса

  • операция разыменования

  • инициализация указателей

Адресная арифметика

Указатели и функции

  • передача аргументов в функцию по указателю

  • указатель в качестве возвращаемого значения функции

Некоторые особенности использования указателей

  • нулевые указатели

  • указатель на тип void

  • указатели на константу и константные указатели

Основные понятия

Память компьютера организована таким образом, что любые данные всегда располагаются по определённому адресу и занимают известный объём памяти, измеряемый в байтах. При программировании на языках высокого уровня нет необходимости заботиться о размещении своих данных в памяти, так как эти проблемы решаются компилятором. Тем не менее, на определённых этапах программирования бывает удобнее обращаться к данным, используя их адреса. Для этой цели служат указатели.

Каждая переменная имеет имя и занимает один или несколько байтов памяти (ячейка памяти), в зависимости от её типа. Номер первого байта считается адресом переменной. При использовании имени переменной мы получаем доступ к её значению непосредственно, а при использовании указателей – косвенно.

Подобно тому, как переменная типа char имеет в качестве значения символ, а переменная типа int – целочисленное значение, переменная типа указатель имеет в качестве значения адрес ячейки оперативной памяти. Допустимые значения для переменной-указателя – множество адресов оперативной памяти компьютера. Указатель – это особый вид переменной, значением которой является адрес другой переменной определённого типа. Указатель является одним из наиболее важных понятий языка C++.

Указатель – это переменная, содержащая адрес другой переменной. Переменная-указатель имеет имя, как и любая другая переменная, а также имеет тип, определяющий то, на какие типы данных она может указывать.

Под адресом будем понимать местоположение ячейки памяти. В общем случае сам адрес занимает 4 байта.

Объявление указателей

Итак, указатель – это особый вид переменной, которая хранит адрес ячейки памяти, где может быть записано значение другой переменной. Для него определены понятия константы, переменной, массива. Как и любую переменную, указатель необходимо объявить:

тип_данных * имя_указателя;

где тип_данных – тип, на который будет указывать указатель;

символ звездочка (*) после типа (непосредственно или через пробел) является признаком того, что объявлена переменная-указатель;

имя_указателя – имя переменной-указателя.

Примеры объявления указателей:

int * pi; // указатель на тип int

float *pf; // указатель на тип float

При объявлении более чем одного указателя символ звёздочка ставится перед каждым из них. Указатель может быть объявлен в одном списке с переменными и массивами:

int x, b, *pint, a[10];

но лучше их объявлять отдельно.

В С++ существует общепринятое соглашение – называть переменные-указатели именами, начинающимися с латинской буквы p. Это позволяет сразу увидеть, какие переменные являются указателями, что, в свою очередь, упрощает восприятие программ.