Not really. &p is the address of the pointer p . &p+1 will refer to an address that is one int* further. What you want to do is
p=p+1; /* or ++p or p++ */
Now that you do
cout << *p;
You will get 54. The difference is that p contains the address of the beginning of the array int, and &p - the address of p. To move one element forward, you need to point further to the int array, and not further along your stack where p is located.
If you only have &p , you will need to do the following:
int **q = &p; *q = *q+1; cout << *p;
This will also print 54, if I'm not mistaken.
freespace
source share