I understand the overall meaning of pointers and references(or at least I think i do), I also understand that when I use new I am dynamically allocating memory. My question is the following, if i were to use cout << &p it would display the "virtual memory location" of p. Is there a way in which I could manipulate the "virtual memory location?" The following code shows an array of ints, if I wanted to show the value of p[1] and I knew the "virtual memory location" of p, could I hypothetically do &p + 1 and obtain the value of p[1] by doing cout << *p, since *p is now a pointer to the second element in the array.
int *p;
p = new int[3];
p[0] = 13;
p[1] = 54;
p[2] = 42;