Che cosa motiva la preferenza sintattica per quanto riguarda la dichiarazione del puntatore in C / C ++? [duplicare]

3

Entrambe le seguenti sono dichiarazioni di puntatori valide in C / C ++:

int *x;
int* x;

Il primo sembra essere preferito dai programmatori C / C ++ esperti. Personalmente trovo che quest'ultimo sia più facile da capire - illustra che il puntatore è un fattore del tipo della variabile, non il suo nome. Inoltre, questo unifica stilisticamente la dichiarazione di puntatori e funzioni che restituiscono puntatori:

int* foo(); //foo returns an int*
int* x;     //x is an int*
int *foo(); //generally unused (in my experience)
int *x;     //feels wrong in this context

int *x sembra controintuitivo nonostante sia la norma, quindi ritengo di dover trascurare qualcosa.

Che cosa motiva la preferenza sintattica per quanto riguarda la dichiarazione del puntatore in C / C ++?

    
posta Conduit 07.12.2017 - 18:22
fonte

1 risposta

3

Entrambe le forme hanno esattamente la stessa sintassi. Si differenziano solo per gli arrangiamenti di spaziatura.

La prima forma è preferita perché riflette bene la semantica: il puntatore è solo per la variabile che segue immediatamente la stella:

int *p, a; // p is pointer, a is plain int

Il secondo modulo potrebbe essere fuorviante, perché dà l'impressione che il puntatore appartiene al tipo e sarebbe applicabile a tutte le variabili nella stessa istruzione:

int* p, a; // still, only p is pointer, a is plain int despite impressions
    
risposta data 07.12.2017 - 18:46
fonte

Leggi altre domande sui tag