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

    [C] puntatori e passaggio di funzione

    ciao!
    ho un main:
    int main()
    {
    ...

    int eta;
    i=pippo(&eta);
    ....
    }

    questa è la funzione PIPPO:

    int pippo(int *eta)
    {
    ....
    /*Qui devo modificare il valore di età che è passato per indirizzo
    in questo modo potrò usarlo nel main modificato.
    */

    //Ho provato a scrivere :
    *eta=100; //ma non funge..

    ....
    return 0; //che non posso cambiare (dato da specifica)
    //Quindi il valore di eta devo per forza cambiarlo tramite //indirizzo, senza variabili globali.
    }

    Come fare?

    grazie!!

  2. #2
    Mah, non saprei come hai impostato il programma,
    cmq dai un'occhiata a questo codice al volo (non badare ad eventuali errori):


    Questo codice modifica correttamente il valore di i;
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int pippo(int*);
    
    int main()
    {
         int i=0;
         printf("valore iniziale: %d\n", i);
         
         i=pippo(&i);
         printf("valore dopo funzione: %d\n", i);
         
         return EXIT_SUCCESS;     
    }
    
    int pippo(int* pvalue)
    {
         *pvalue=100;
         return *pvalue;
    }
    <| http://cikkox.altervista.org |>
    <| GNU/Linux Registered User #365929 |>
    <| GnuPG/OpenPGP key available |>

  3. #3
    Utente di HTML.it L'avatar di Kreator
    Registrato dal
    May 2002
    Messaggi
    278

    Re: [C] puntatori e passaggio di funzione

    Originariamente inviato da devilfire
    ciao!
    ho un main:
    int main()
    {
    ...

    int eta;
    i=pippo(&eta);
    ....
    }

    questa è la funzione PIPPO:

    int pippo(int *eta)
    {
    ....
    /*Qui devo modificare il valore di età che è passato per indirizzo
    in questo modo potrò usarlo nel main modificato.
    */

    //Ho provato a scrivere :
    *eta=100; //ma non funge..

    ....
    return 0; //che non posso cambiare (dato da specifica)
    //Quindi il valore di eta devo per forza cambiarlo tramite //indirizzo, senza variabili globali.
    }

    Come fare?

    grazie!!


    Le cose sono 2, o usi un passaggio per riferimento o un passaggio per indirizzo.
    Questo dovrebbe essere il tuo programmino con il passaggio per riferimento, intendo "dovrebbe" per il fatto che non lo ho compilato.

    int pippo(int &eta); // predichiarazione funzione

    int main()
    {
    ...

    int eta;
    i=pippo(eta);
    ....
    }

    questa è la funzione PIPPO:

    int pippo(int &eta) // definizione funzione
    {
    ....
    /*Qui devo modificare il valore di età che è passato per indirizzo
    in questo modo potrò usarlo nel main modificato.
    */

    //Ho provato a scrivere :
    eta=100; //ma non funge..

    ....
    return eta; //che non posso cambiare (dato da specifica)
    //Quindi il valore di eta devo per forza cambiarlo tramite //indirizzo, senza variabili globali.
    }

    Una precisazione.
    Non ha senso mettere un ritorno alla funzione, dovevi ritornare un vuoid.
    Cmq provalo.
    Dovrebbe andare, vedrai che il valore di "eta" nel main e' pari a 100.
    Fa sapere se funziona.


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.