[risolto]passare per riferimento una struttura.

di il
3 risposte

[risolto]passare per riferimento una struttura.

Ciao a tutti..

Ho un problema con il mio programma, devo aggiornare dei parametri risiedenti dentro una struttura in una funzione, in realtà è un vettore di quella struttura. Mi sono venuti in mente 2 modi per farlo, ma ottengo errore sia in un modo che nell'altro.
1. Ho pensato di passare alla funzione la struttura e di restituirla dopo l'elaborazione e registrarla in se stessa, in questo modo:

//chiamata
mystruct[i]=function(mystruct[i]);

//la funzione
struct mystruct function(struct mystruct)
{
    ..
    return mystruct;
}
questa procedura mi restituisce questo errore:
error: subscripted value is neither array nor pointer.


2. Ho pensato allora di aggirare il problema con il passaggio per riferimento (la funzione è di tipo int perché mi serve un valore restituito) ma il risultato non cambia:

//chiamata
ciclo=function(&mystruct[i]);

//funzione
int function(struct* mystruct)
{
    mystruct.x=<operazione>  //  qui mi da l'errore
    return TRUE;
}
questa procedura mi restituisce questo errore:
request for member ‘x’ in something not a structure or union


se qualcuno può delucidarmi ne sarei grato...

grazie a tutti.

3 Risposte

  • Re: [risolto]passare per riferimento una struttura.

    C oppure C++?
    solo C++
    
    int function(struct & struttura)
    {
        struttura.x = ......
    }
    
    //chiamata
    ciclo=function(mystruct[i]);
    
    
    C e C++
    int function(struct * struttura)
    {
        struttura->x = ......
    }
    
    //chiamata
    ciclo=function(&mystruct[i]);
    
  • Re: [risolto]passare per riferimento una struttura.

    Programmazione C

    Ti ringrazio per la risposta, ho risolto, sbagliavo nella sintassi . anzichè ->...

    Se non ti scoccia posso chiederti perché si usa una sintassi differente?

    grazie..
  • Re: [risolto]passare per riferimento una struttura.

    Non differente. Il C non accetta il passaggio per riferimento delle varibili ma solo il passaggio per valore. Si risolve passando per valore il puntatore.
Devi accedere o registrarti per scrivere nel forum
3 risposte