se ho un vettore di struct posso tranquillamente passale per indirizzo.

mentre se ho una struct semplice, ad esempio:

struct persona { char nome[30];
char cognome[30];
int anni;
} mario;


per passare un solo elemento ad una funzione , faccio il passaggio per valore.

mentre se voglio passarla tutta posso definire un prototipo del genere?

struct persona funzione (struct persona nome_persona);

e poi per la chiamata ad esempio:

funzione( massimo);

e nel return della struct metto:

return (massiomo_rinnovato); //ovvero ritorno tutta la struct come se fosse una variabile

posso fare tutto questo?

oppure devo passare la struct per puntatore?

facendo

void funzione (struct persona *ptr); //protoripo

la chiamata:

funzione (&massimo);

senza ritornare nulla?