Address of an array

32,002

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.

Share:
32,002
quuxbazer
Author by

quuxbazer

Updated on August 02, 2020

Comments

  • quuxbazer
    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?