Привет, насколько я понимаю, у вас путаница с понятиями указателей и ссылок. Позвольте мне попробовать и разбить это для вас:
Когда мы используем любой из них в объявлении переменной, представьте, что он указывает тип данных этой переменной.
Например,
int *a;
создает переменную-указатель 'a', которая может содержать адрес (другими словами, указать) другой целочисленной переменной.
Аналогичным образом int & a = b;
создает ссылочную переменную 'a', которая ссылается на b (другими словами, 'a' - это просто псевдоним к целому числу b).
Теперь может показаться, что они одинаковы, в действительности они оба выполняют одинаковую функциональность, но есть некоторые различия:
Указателю выделена память для хранения адреса другой переменной, на которую он указывает, тогда как ссылки на самом деле не хранят адрес переменной, на которую они ссылаются.
Другое отличие состоит в том, что указатель не нужно инициализировать при его объявлении, но ссылка должна быть инициализирована при объявлении, в противном случае он выдает ошибку. то есть; int * a;
в порядке, тогда как int & a;
выдает ошибку.
Теперь для операторов, попробуйте и посмотрите, как они вообще не связаны с указателями или ссылками (хотя именно там мы используем их чаще всего).
Оператор ссылки (&) просто возвращает адрес своей переменной-операнда. В то время как оператор разыменования (*) просто предполагает, что значением его аргумента является адрес, и возвращает значение, хранящееся по этому адресу.
Надеюсь, это помогло вам. Вот несколько полезных ссылок (без каламбура):
https://www.ntu.edu.sg/home/ehchua/programming/cpp/cp4_PointerReference.html
Как выглядит ссылка на C ++ с точки зрения памяти?