|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
Programma C
Salve ho questo programma in C e devo indicare quale valore viene stampato. Leggendo il programma (dovrebbe!) stampare 58. Poi ho provato a esegiure il prigramma e stampa 3
non ho capito xkè, qualkuno sa spiegarmelo???Codice:
void funzione(int x) {
int k;
for(k = 0; k < 10; k++) x += k;
}
void main() {
int a = 3;
funzione(a);
printf("%d\n", a);
}
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 499
|
forse perchè stampi a che inizializzi a 3 e non modifichi +..
__________________
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1454
|
il problema è che l'argomento della funzione è passato per valore. in termini semplicistici, quando scrivi "funzione(a)" il programma si fa una copia dell'argomento, sulla quale la funzione lavora. al termine della funzione tale copia, eventualmente modificata, viene distrutta, quindi la variabile a non viene modificata.
se lavori in c++ risolvi abbastanza facilmente con un passaggio per riferimento, dichiarando la funzione come "void funzione(int& x)". altrimenti ti rimangono solo due vie: passare l'argomento per indirizzo, dichiarando la funzione così: Codice:
void funzione(int* x) {
int k;
for(k = 0; k < 10; k++) *x += k;
}
oppure dichiarandola come int per ritornare x ed assegnarla all'argomento stesso: "a=funzione(a)" Ultima modifica di Furla : 26-10-2007 alle 19:01. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
Il codice è esattamente quello che ho postato! Quindi dice che a non viene modificato dalla funzione??
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 499
|
yess.. nella funzione fa un po' di conti ma il risultato da la non si muove...
__________________
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
OK, thanks a entrambe!!
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:58.










non ho capito xkè, qualkuno sa spiegarmelo???








