In the statement:
int *p;
p
is a pointer (not
*p
)
The variable declaration may be interpreted as follows:
*p is an int, hence p is a pointer to an int.
A similar reasoning gives
int ** q;
q
is a pointer to a pointer to an
int
.
Generally speaking, the expressions
*a
,
**a
cannot be interpreted correctly without context.
For instance, the statement
printf("%d\n"), **q);
(if correct) tell us
q
is a double pointer.