Sto lavorando a Learn C The Hard Way e sto lottando per capire qualcosa nell'Esercizio 16: Strutture e puntatori a loro.Perché c'è un puntatore annidato all'interno di una definizione di struct C?
struct Person *Person_create(char *name, int age, int height, int weight)
{
struct Person *who = malloc(sizeof(struct Person));
assert(who != NULL);
who->name = strdup(name);
who->age = age;
who->height = height;
who->weight = weight;
return who;
}
Comprendo che struct Person restituisce un puntatore (* person_create) all'inizio della struct. Ma perché c'è una seconda definizione di struttura per Persona immediatamente annidata all'interno? Indicando * chi?
Qualcuno può far luce su questo per me. O indicarlo verso una migliore spiegazione della definizione struct in C.
Manca (ma potrebbe indovinare) la definizione di 'struct Person' –
No. La funzione 'Person_create' restituisce un puntatore a un' Person'. La variabile 'who' contiene il valore restituito dalla funzione. Si assegna la memoria e si salva una copia della posizione in cui si trova la memoria. Quindi si impostano i vari campi di questa struttura prima di restituire infine la posizione della memoria allocata, che in questo caso è l'inizio di una 'Persona'. (si ottiene il blocco di essi con l'uso continuato) :) - I puntatori hanno una grossolana analogia con i numeri di pagina in un libro - ti dicono dove trovare qualcosa, con l'ulteriore vantaggio di raccontare (dal tipo del puntatore) cosa ci sarà . – enhzflep