<p>In C++, on the stack, a simple variable is assigned a memory address so that we can use a pointer to contain this memory to point to it; then is a pointer also assigned a memory address?</p>

<p>If yes, can we have a pointer of pointers?</p>

Yes, you are right. We can have pointers to pointers:
```
```
int a;
int b;
int * pa = &a;
int ** ppa = &pa;

// set a to 10
**ppa = 10;

// set pa so it points to b. and then set b to 11.
*ppa = &b;
**ppa = 11;
```
```
Read it from right to left:
ppa is a pointer to a pointer to an int
. It's not limited to
```
**
```
. You can have as many levels as you want.
```
int ***
```
would be a
pointer to pointer to pointer to int
.
I answered a similar question regarding whether primitive variables have addresses here:
Is primitive assigned a memory address?
, the same applies to pointers too. In short, if you never take the address of an object, the compiler doesn't have to assign it an address: It can keep its value in a register.