Links, like pointers in C ++, are addresses of objects in memory. Being able to refer to a specific object is so important that some languages (Java, for example, or the .NET family) state that this is practically the only way to work with objects. At this level of abstraction, there is no difference between references and indexes. The difference appears a level lower: a pointer is a value, an object of the first class, roughly speaking, a memory cell number. Some arithmetic operations can be made with them, compared as numbers, etc. In order to have a pointer (i.e., an address) to access an object at that address, a dereference operation is applied:
*p = 100; // указатель p разыменовывается, и в // полученную ячейку памяти записывается число 100
References, in turn, do not possess the semantics of "object addresses", but the semantics of the objects themselves. You may think that the link is a pointer that itself, automatically, applies a dereference. From this there are several consequences: for example, the immutability of references. In C ++, there is simply no link assignment syntax; any such assignment would be an assignment to the object it points to.
Now for your examples: *p=&t;
incorrectly (an attempt to assign a pointer to a number to a dereferenced pointer p (specifically to the number t), not the number itself), but *p=t
absolutely correct (refer to the address stored in the index and write the number t) .
If we talk about deep thoughts, then, first of all, the pointers came from C and remained a heavy legacy. I think incorrect memory addressing is the most common cause of C ++ programs crashing. Links cannot replace pointers (they are not objects, unlike pointers), but they make life easier when you need to pass some structure weighing a couple of kilobytes into a function, and copying will slow down the program, but you don’t want to mess around with pointers. Links have the same usage syntax as the objects to which they refer, and therefore are more or less interchangeable.
I feel that I have already written a lot, but I could not formulate anything clear :(
I hope it became a little clearer
PS In C ++, there is also the concept of "smart pointers" that behave like pointers, but there are fewer problems with them. When you understand the links and the usual pointers, I highly recommend them to look.