Rispetto alle variabili di tutti gli altri tipi, le dichiarazioni di variabili di tipo puntatore hanno delle regole diverse. Infatti, mentre per tutti gli altri tipi si può fare:
Tipo a, b, c;
e questo dichiara tre variabili di tipo Tipo, nel caso dei puntatori il risultato è differente. La dichiarazione:
int * a, b, c;
Ha come risultato che la sola variabile a è un puntatore a intero, mentre b e c sono variabili intere. Per dichiarare tutte e tre le variabili come puntatori, occorre fare:
int *a, *b, *c;
ossia, si deve mettere l'asterisco * davanti a ognuna delle variabili. La regola per la dichiarazione dei puntatori è semplicemente che un asterisco davanti a una variabile dichiara la variabile (e solo quella) come un puntatore. Quindi, se si fa:
float *x, y, *z;
le variabili x e z sono puntatori a float, dato che sono precedute da un asterisco. La variabile y invece, non avendo * davanti, non è un puntatore ma una variabile di tipo float. Eventuali spazi fra il nome del tipo, l'asterisco, la variabile e le virgole sono ignorati.
Una cosa importante da notare è che nel caso in cui si definisce un tipo puntatore usando la typedef, in nuovo tipo segue invece la regola generale. In altre parole, se si fa:
typedef int * punt; punt a, b, c;
Allora il tipo punt è equivalente al tipo int *. L'unica differenza è che la dichiarazione delle variabili a, b e c le definisce tutte e tre del tipo punt, ossia sono tutte e tre puntatori a interi.