Address of an array
Solution 1
When t
is used on its own in the expression, an array-to-pointer conversion takes place, this produces a pointer to the first element of the array.
When t
is used as the argument of the &
operator, no such conversion takes place. The &
then explicitly takes the address of t
(the array). &t
is a pointer to the array as a whole.
The first element of the array is at the same position in memory as the start of the whole array, and so these two pointers have the same value.
Solution 2
The actual type of t
is int[10]
, so &t
is the address of the array.
Also, int[]
implicitly converts to int*
, so t
converts to the address of the first element of the array.
quuxbazer
Updated on August 02, 2020Comments
-
quuxbazer almost 4 years
int t[10]; int * u = t; cout << t << " " << &t << endl; cout << u << " " << &u << endl;
Output:
0045FB88 0045FB88 0045FB88 0045FB7C
The output for
u
makes sense.I understand that
t
and&t[0]
should have the same value, but how come&t
is also the same? What does &t actually mean?