PDA

Visualizza la versione completa : [C] Struct e Array


Arkano92
20-04-2015, 22:51
Salve ragazzi,
ho una questione banale ma che mi 'disturba'.
In C una funzione non può restituire un array per valori, ma può bensì trattarli solamente per reference. Questo per me è un problema, in quanto in una simulazione molecolare avevo realizzato una struct particle con tre componenti double per le coordinate x, y e z, e realizzato funzioni anche abbastanza complesse che restituiscono strutture create all'interno della funzione stessa per valore.
Ora, per ragioni di condizioni periodiche al bordo che non sto a spiegarvi devo passare ad una descrizione in array di 3 componenti per le coordinate. Per evitare di cambiare la struttura del programma, pensavo semplicemente di realizzare una struttura con un solo array, ovvero

struct Particle{
double r[3];
};

continuando a passarle per valore.
Questo trucco mi consentirebbe di passare array per valore, in sostanza.
Funziona?

oregon
20-04-2015, 22:57
Purtroppo non ho capito né il problema né la tua soluzione ...

Arkano92
20-04-2015, 23:05
Sì, probabilmente sono stato un po' contorto.
Faccio un esempio specifico.
Inizialmente avevo la struttura
struct Particle{
double x;
double y;
double z;
};
E se ad esempio dovevo porre una vecchia struttura in una nuova bastava fare
NewParticle = OldParticle;
Ora però ho bisogno di passare dalle coordinate (x,y,z) ad un array r[3], e non potrei ad esempio fare
NewArray = OldArray;
Se però realizzo la struttura scritta nel primo messaggio
struct Particle{
double r[3];
};
che è in sostanza un array, posso copiare un array in un altro potendo fare
NewParticle = OldParticle;
scavalcando la difficoltà. Giusto?

oregon
20-04-2015, 23:46
Funziona ma ti complichi la vita nel trattamento dell'array r ...

Perché non usi una semplice memcpy per copiare l'array?

Loading