Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1
Кент Рейсдорф. BORLAND C++BUILDER. Страница 54
? Указатели
? Ссылки
? Операторы new и delete
? Функции в Си++
Указатели — одна из самых трудных для понимания областей языка Си++. Но при этом они входят в число мощнейших инструментов Си++. Моя задача в этом разделе заключается не столько в том, чтобы дать вам строгое описание указателей, а скорее в том, чтобы научить вас пользоваться указателями при написании программ с помощью C++Builder. Итак, что такое указатель? Это переменная, которая содержит адрес другой переменной. Видите, все довольно просто! Поскольку указатель содержит адрес другой переменной, говорят, что он «указывает» на эту переменную. Это называется косвенной адресацией, т.к. указатель не связан напрямую с данными, хранящимися в памяти.
(Указатель (pointer) — это переменная, которая содержит адрес другой переменной.
С помощью указателя осуществляется так называемая косвенная адресация (indirection), т.к. он не связан напрямую с данными в памяти.
Давайте рассмотрим пример. Ранее мы говорили о массивах. Допустим, у вас есть массив чисел типа int. Вы можете обращаться к отдельным элементам массива, используя индексный оператор:
int array[] = { 5, 10, 15, 20, 25 };
int someVariable = array[3]; // число 20
Вы можете с той же целью использовать указатель:
int array[] = { 5, 10, 15, 20, 25 };
int* ptr = array;
int someVariable = ptr[3];
В этом примере указателю ptr присваивается адрес начала массива в памяти. Обратите внимание, что указатель имеет определенный тип (указатель на int) и при его объявлении использован оператор разыменования (символ *). Вы можете объявить указатель на любой из встроенных типов данных (int, char, long, short и т.д.), а также указатель на объект (структуру или класс). После присваивания указатель содержит адрес начала массива и таким образом указывает на массив.