C - inizializzazione dei puntatori, posizione dell'asterisco

C - inizializzazione dei puntatori, posizione dell'asterisco

Non importa se stai dichiarando un solo puntatore. Di solito viene scritto come nel secondo esempio (nel codice che di solito leggo/scrivo) ma per il compilatore è lo stesso.

Il problema può sorgere se stai dichiarando più di un puntatore. Ad esempio, questo non sta dichiarando due puntatori, ma dichiara un puntatore e una var di tipo tipo.

type* var1, var2;

Devi invece fare:

type* var1, *var2;

Preferisco usare sempre * della var.


Il puntatore è il tipo e penso che abbia più senso raggruppare le informazioni sul tipo:

int* foo;

Questo può creare confusione se più variabili sono definite sulla stessa riga:

int* foo, bar;  // foo will be int*, bar will be int

La soluzione a questo è, non dichiarare mai più variabili sulla stessa riga. Qualcosa che Code Complete sostiene, comunque.


Entrambi funzionano. Direi che il numero 1 è più chiaro in generale , ma fuorviante in C e può portare a errori, ad es.:

type* var1, var2;

// This actually means:

type *var1;
type var2;

Quindi direi che il numero 2 è più idiomatico in C e quindi consigliato, soprattutto se non sei l'unico programmatore a lavorare sul codice (a meno che, ovviamente, non siate tutti d'accordo su uno stile).