Recentemente ho iniziato a studiare su strutture e puntatori, ma c'è qualcosa che non ho capito del design di un struct
. Comprendo la dichiarazione del struct
i.e typedef struct Alias
e il suo contenuto, ma non capisco Get_noAllyp
e *no_getOf
alla fine della dichiarazione. Quali sono? Neanche io potrei davvero trovare una buona fonte.Come una struttura viene digitata su più nomi?
typedef struct Alias {
char *s_a_name;
char **s_aliases;
short *s_dumr;
int s_get_sum;
}Get_noAllyp, *no_getOf; /*Here, I don't understand this one.
Where did these two variables come from?
And one of them is a pointer.*/
Non utilizzare entrambi i tag 'C' e' C++ '. Sono lingue diverse e hanno regole diverse (sebbene abbiano molto in comune). – axiac
Il codice postato sta creando due tipi (Get_noAllyp e * no_getOf) Tuttavia, il nome del tag struct è 'Alias', quindi questi due tipi hanno nomi che sono molto fuorvianti. I nomi dei tipi fuorvianti causeranno equivoci, errori di codice, ecc. In generale, non digitare mai una definizione di struct. È molto più chiaro scrivere "struct Alias" o "struct Alias *" piuttosto che cercare di ricordare che "no_getOf" è in realtà un puntatore e in realtà è un puntatore a una struttura Alias. Il typedefing di una struct ingombra il codice, porta a errori di comprensione e ingombrare lo spazio dei nomi del compilatore. – user3629249
@ user3629249 Bene, grazie signore! Ma il codice snippet era solo un puro esempio di come alcune strutture possono essere viste nei codici sorgente, quindi molto fastidioso se la struttura ha un nome schifoso alla fine come sopra. Capisco che tali nomi di strutture non siano una buona pratica e molto confusi. Ma ancora una volta, avrei ancora bisogno di un chiarimento anche se era _Alias e * pAlias :) –