Sintatticamente sono la stessa cosa; se è da preferire una o l'altra è un altro discorso...dalla grammatica del C si vede che le dichiarazioni sono costituite da un nome di tipo + un declarator:
Declaration: Type Declarator
e una delle possibili forme del Declarator è
Declarator: * ID
quindi l'operatore * (STAR) fa parte del Declarator e non del tipo, ovvero è associato all'identificatore dell'oggetto dichiarato; non a caso, se c'è una dichiarazione multipla:
char * a, b, c;
equivale a:
char *a;
char b;
char c;
cioè lo STAR è associato solo al primo identificatore che precede, e non è un "modificatore" del tipo char.

Rispondi quotando