Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [C++]Cambiare variabile assegnata alla funzione

    Ciao a tutti! E' da poco che ho cominciato ad esercitarmi nel creare funzioni e mi sono imbattuto in un problema.Se creo una funzione del tipo

    int incremento(int x){
    x++}

    la variabile x non viene incrementata.Perchè mai?

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [C++]Cambiare variabile assegnata alla funzione

    Originariamente inviato da TheDark191
    Ciao a tutti! E' da poco che ho cominciato ad esercitarmi nel creare funzioni e mi sono imbattuto in un problema.Se creo una funzione del tipo

    int incremento(int x){
    x++}

    la variabile x non viene incrementata.Perchè mai?
    Perché la variabile passata a incremento viene passata per valore e non per indirizzo. La funzione pertanto riceve una copia della variabile: ogni modifica di questa copia non influenza la variabile originale. Se vuoi poter modificare il suo valore dovresti usare i puntatori.

    edit: per essere pignoli x viene incrementata, solo che essendo una copia della variabile che passi alla funzione non vedrai le modifiche al di fuori della funzione stessa.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    ah ecco! grazie della delucidazione ora vedo un po come si utilizzano i puntatori ^^

  4. #4
    scusa ma non funziona ancora >.< se faccio la funzione

    int incremento(int* x){
    *x++;}


    e in mai dichiaro una variabile int a=0; se questa variabile la inserisco nella funzione non ottengo l'incremento della variabile ma continua a rimanere a=0

  5. #5
    Originariamente inviato da TheDark191
    scusa ma non funziona ancora >.< se faccio la funzione

    int incremento(int* x){
    *x++;}


    e in mai dichiaro una variabile int a=0; se questa variabile la inserisco nella funzione non ottengo l'incremento della variabile ma continua a rimanere a=0
    Certo, la a deve essere un puntatore, non una variabile quindi si dichiara così: int * a

  6. #6
    continua ad essere 0 :S ho fatto così precisamente

    codice:
    int incremento(int* x);  i
    
    int main(int argc, char *argv[]) {
    int * a=0;
    incremento(a);
    cout<<a;
    system("PAUSE");
    return EXIT_SUCCESS;
    }
    
    int incremento(int*x){
    *x++;}

  7. #7
    Il codice corretto è:
    codice:
    int incremento(int* x);
    
    int main(int argc, char *argv[])
    {
        int a;
        incremento(&a);
        cout<<a;
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    
    int incremento(int*x)
    {
        *x++;
    }
    Prima di fare ulteriori danni con i puntatori ti consiglio di leggerti il relativo capitolo del tuo libro di C, non sono un concetto semplicissimo.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    scusa ma continua a non funzionare...ho copiato e incollato anche la tua correzione ma niente,a rimane sempre allo stesso valore e non aumenta

  9. #9
    Pardon, dimenticai una cosa
    codice:
    int incremento(int* x);
    
    int main(int argc, char *argv[])
    {
        int a=0;
        incremento(&a);
        cout<<a;
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    
    int incremento(int* x)
    {
        (*x)++;
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    ah ecco ora è andato!grazie mille

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.