Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C] Struct e Array

  1. #1

    [C] Struct e Array

    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?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Purtroppo non ho capito né il problema né la tua soluzione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    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?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Funziona ma ti complichi la vita nel trattamento dell'array r ...

    Perché non usi una semplice memcpy per copiare l'array?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.