Это два различных выражения:
Указатель - это тип, который содержит адрес фрагмента памяти.Поэтому, когда вы пишете:
p = &vec[n]
Указатель будет иметь тот же адрес, что и адрес n
-го элемента vec
Когда вы пишете
*p = vec[n]
На самом деле вы утверждаете, что память, которая находится по адресу p
, должна иметь такое же содержимое, как n
элемент vec
.
Следующее может прояснить это:
| original | p = &vec[n] | *p = vec[n]
------+-----------------+-----------------+----------------
data | Address Content | Address Content | Address Content
------+-----------------+-----------------+----------------
p | 0x12345 0000000 | 0xabcde 0000005 | 0x12345 0000005
vec[n]| 0xabcde 0000005 | 0xabcde 0000005 | 0xabcde 0000005