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?
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.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?
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
ah ecco! grazie della delucidazione ora vedo un po come si utilizzano i puntatori ^^
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 * aOriginariamente 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
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++;}
Il codice corretto è:
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.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++; }
Amaro C++, il gusto pieno dell'undefined behavior.
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
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.
ah ecco ora è andato!grazie mille