It doesn't matter in fact what does the p1 pointer store: &p1 would be the same. It's just the address of object p1, which is a pointer and can store an address of another object. And no matter what it stores it is located at the same address, so &p1 would be also the same.