Звездочка, кроме умножения, имеет два значения:
a) Когда объявляет переменную : * x означает "X - указатель" b) Когда использует переменную : * x (когда x относится к типу указателя) означает «взять все, что указано х» - противоположность & x, что означает «взять адрес x».
Код:
doSomething(*aVar)
просто хочет разыменовать указатель «aVar» (принять значение типа int, указанное им) и передать это значение типа int в качестве параметра функции.
Переменная «aVar»"хранит адрес некоторого целочисленного значения, а не само значение, поэтому вам нужно использовать оператор" * "для разыменования его каждый раз, когда вы хотите получить доступ к целому числу, а не к самому адресу памяти.
Ссылки вC ++ довольно нелогичны («замаскированные указатели»), поэтому, если doSomething
принимает ссылку на int, вы должны вызывать ее так, как если бы вы передавали фактическое значение типа int, а не указатель.Следовательно, вам нужен оператор разыменования.