I am confused about array usage as pointer and result of that. Let me explain. When I try this
#include <iostream>
using namespace std;
int main()
{
    int a = 10;
    int *myPointer = &a;
    cout << "*myPointer: \t" << *myPointer << endl;
    cout << "myPointer: \t" << myPointer << endl;
    cout << "&myPointer: \t" << &myPointer << endl;
    cout << "myPointer[0]: \t" << myPointer[0] << endl;
    cout << endl;
    int myArray[3] = {1,2,3};
    cout << "*myArray: \t" << *myArray << endl;
    cout << "myArray: \t" << myArray << endl;
    cout << "&myArray: \t" << &myArray << endl;
    return 0;
}
All of output are exactly what I expected, except last one (&myArray). Lets say my ram something like this:
| Address | Variable | Value | 
|---|---|---|
| 0xA100 | a | 10 | 
| 0xA101 | myPtr | 0xA100 | 
| 0xA102 | 1 | |
| 0xA103 | 2 | |
| 0xA104 | 3 | |
| 0xA105 | myArray | 0xA102 | 
If I imagine it correctly, then how "&myArray" can be same with "myArray"? Actually, I think it can be anything but 0xA102. Because, this result means that "myArray" is in 0xA102 and value of pointed by myArray is in 0xA102 too. And I know it is weird but it means also, as a value "1", is in 0xA102 too. (At least I got it from this result).
So, I cannot catch the point. I think the result has to be 0xA105 if "&" means address. If yes, why result is not 0xA105. If not, why they have different usage although arrays are pointers. Is there anybody can clarify the matter? Thanks.
 
    