Глава 7. Указатели и ссылки__________________________________165
/ I Определение функции void SetValue(int *val) ( *val =10; )
Заметьте, что для того, чтобы иметь возможность оперировать со значением адресуемых объектов, указатель следует разыменовать. Рис. 7.3 иллюстрирует взаимосвязь между указателем и тем, на что он указывает. Тип данных сообщает, что находится на другом конце указателя; присутствие операции звездочка (*) конкретизирует переменную как указатель; а имя нужно для того, чтобы к нему обращаться.
// Это val
Рис. 7.3. Иллюстрация взаимосвязи между указателем и адресуемым значением. В этом примере фигурирует некий указатель на int под именем val и то, на что он указывает: целое число, равное 10
Замечание
В случае функции SetValue разыменование — это *val. Когда перед указателем стоит операция разыменования, соответствующий фрагмент кода читается "присвоить целочисленное значение 10 тому, на что указывает
val".
Зачем вообще нужны указатели? Указатели — это простой способ создания ссылок на позицию в памяти. Так работают вызовы функций, только их деятельность происходит за кулисами. Язык, обеспечивая поддержку указателей, предоставляет вам возможности для реализации весьма сложных идей.
Возврат по ссылке
В этом разделе мы сосредоточим свое внимание на ссылках в контексте возвращаемых значений функций. Эта тема весьма важна для освоения фундаментальных приемов разработки, с которыми вы столкнетесь, создавая свои собственные функции и классы.