Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [c] passaggio ,ad una funzione, di un puntatore per riferimento

    Salve a tutti!!!

    Ho difficoltà su dei passaggi ad una funzione con puntatori

    in breve nel main dichiaro il puntatore ad int
    int * max;
    il puntatore deve essere passato ad una funzione che elabora un array, fa delle operazioni , e inizializzano il puntatore ad un certo indirizzo di un elemento dell'array

    l'indirizzo poi mi servirà nel main per un altra operazione

    mi sono accorto però che il passaggio avviene per valore quindi nel main il puntatore rimane sempre lo stesso

    la mia domanda è :come faccio a passare un puntatore per riferimento?

    ecco un esempio del codice che ho fatto io.

    int main (void)
    {
    int * max;
    funzione (max);
    printf("max =%d",*max);

    }

    void funzione (int * a)
    {
    int in=5;
    a=∈
    }



    se la funzione la chiamo così : funzione(&max)
    il compilatore da dei warning.

    escludete il fatto che la funzione possa ritornare un puntatore.

    che faccio?
    Agos

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Attenzione ... nella funzione, l'array non puo' essere locale, perche' al ritorno questo non esiste piu' ... a meno che non sia allocato dinamicamente ...

    Mancano alcune informazioni per decidere come rispondere ...

    Prova a fare un esempio *realistico* ... un esempio *efettivo* di cio' che devi fare ...

  3. #3
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,035
    stai assegnando un indirizzo di memoria diverso ad a
    Per fare quello che vuoi usa un puntatore a puntatore.

    codice:
    int main (void)
    {
    int * max;
    funzione (&max);
    printf("max =%d",*max);
    
    }
    
    void funzione (int **a)
    {
    int in=5;
    *a=∈
    }
    così facendo, appena uscito dalla funzione, max conterrà l'indirizzo di memoria della variabile in...
    Resta il fatto però che, come ti ha detto Oregon, in (e anche l'array) sono variabili locali alla funzione e verranno distrutte non appena il controllo verrà restituito alla main.

  4. #4
    in realtà l'array lo dichiaro nel main, e alla funzione passo l'indirizzo base, quindi problemi dell'array sono esclusi.

    ho provato la soluzione di Lak3d e funziona bene, soluzione già provata, ma con scarsi risultati perchè poi dimenticavo che nel corpo della funzione devo usare * alle variabili passate.


    grazie mille


    Agos

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Beh ... allora quando posti un problema, devi indicarne esattamente i termini ...

    In base a quello che proponi ti si da' una risposta, ma se poi le cose stanno diversamente da come avevi detto, ovviamente la risposta non aveva senso ed e' stata una perdita di tempo ...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.