Указатели для начинающих (Pointers)

ОГЛАВЛЕНИЕ

Указатели - это практически то же самое, что и переменные. Тем не менее, они отличаются тем, что вместо того, чтобы содержать данные, они содержат указатель на адрес памяти, где данная информация может быть найдена. Это очень важный принцип. Многие программы и идеи полагаются на указатели в качестве основы своего дизайна, к примеру - связные списки.

Подготовка

Каким способом определить указатель? Таким же, как и любую другую переменную, за исключением того, что необходимо добавить символ звездочки перед именем. К примеру, следующий код создает два указателя, оба из них указывают на значение типа integer:

int* pNumberOne;
int* pNumberTwo;

Обратите внимание на префикс "p" перед двумя переменными. Это соглашение используется для указания того, что данная переменная является указателем. Теперь давайте сделаем более полезные указатели:

pNumberOne = &some_number;
pNumberTwo = &some_other_number;

Символ & (амперсанд) читается как "по адресу" и вызывает возврат адреса из памяти переменной, вместо возврата самой переменной. Итак, в данном примере pNumberOne установлен адрес равный some_number, тем самым pNumberOne теперь указывает на some_number.

Теперь если мы хотим ссылаться на адрес some_number, мы можем использовать pNumberOne. Если нам необходимо ссылаться на значение some_number из pNumberOne, нам необходимо написать *pNumberOne. Символ * разыменовывает указатель и читается как "распределенная память, на которую ссылается", и декларируется в виде int *pNumber.