int i = 0; // integer type
If I want to point to i
I need a pointer to integer type:
int* ip; // pointer to integer type
If I want to point to ip
I need a pointer to (pointer to integer) type:
int** ipp; // pointer to (pointer to integer) type
That's needed because ip
is type int*
. So a pointer to that is int**
.
Whenever you need a pointer to a given type, you use a *
in the declaration. Even if that type is already a pointer type.
So to point to a value, you need int*
.
So to point to a pointer to a value, you need int**
.
So to point to a pointer to a pointer to a value, you need int***
.
So to point to a pointer to a pointer to a pointer to a value, you need int****
.
etc...