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

/ I Определение функции void SetValue(int *val) ( *val =10; )

Заметьте, что для того, чтобы иметь возможность оперировать со значением адресуемых объектов, указатель следует разыменовать. Рис. 7.3 иллюстрирует взаимосвязь между указателем и тем, на что он указывает. Тип данных сообщает, что находится на другом конце указателя; присутствие операции звездочка (*) конкретизирует переменную как указатель; а имя нужно для того, чтобы к нему обращаться.

// Это val

h01651.jpg

Рис. 7.3. Иллюстрация взаимосвязи между указателем и адресуемым значением. В этом примере фигурирует некий указатель на int под именем val и то, на что он указывает: целое число, равное 10

Замечание

В случае функции SetValue разыменование — это *val. Когда перед указателем стоит операция разыменования, соответствующий фрагмент кода читается "присвоить целочисленное значение 10 тому, на что указывает

val".

Зачем вообще нужны указатели? Указатели — это простой способ создания ссылок на позицию в памяти. Так работают вызовы функций, только их деятельность происходит за кулисами. Язык, обеспечивая поддержку указателей, предоставляет вам возможности для реализации весьма сложных идей.

Возврат по ссылке

В этом разделе мы сосредоточим свое внимание на ссылках в контексте возвращаемых значений функций. Эта тема весьма важна для освоения фундаментальных приемов разработки, с которыми вы столкнетесь, создавая свои собственные функции и классы.