Oppure

Loading
29/08/09 17:38
cip
Ciao a tutti!qualcuno mi sa spiegare a cosa serve la funzione void?
Per esempio nel seguente programma usarlo o non usarlo che differenza fa?


/*QUESTO PROGRAMMA USA UNA FUNZIONE PER SCAMBIARE DUE NUMERI DATI*/
#include <stdio.h>
#include <stdlib.h>
void scambia(int&,int&;);
main()
{int x,y;
printf("\ndammi un numero reale x=";);scanf("%d",&x);
printf("\ndammi un numero reale y=";);scanf("%d",&y);
printf("\n\n ecco i numeri prima dello scambio: ";);
printf("\n\n x=%d e y=%d" ,x,y);
scambia(x,y);
printf("\n\n ecco i numeri dopo lo scambio:%d %d ",x,y);
system ("PAUSE";);return 0; }
void scambia(int& a,int& b)
{int aux;
aux=a;a=b;b=aux;
system ("PAUSE";);return; }



Grazie per le eventuali risposte!!!:-?
aaa
29/08/09 17:46
Pippo_94
Void devi lasciarlo, indica che la funzione non ritorna alcun valore...
aaa
29/08/09 17:48
steve__92
void è una variabile di 'non valore'
negli standard ansi bisogna specificare il valore di ritorno di una funzione, se non ritorna niente si scrive void (il return lo puoi omettere).
serve anche per dichiarare un puntatore di cui non si conosce il tipo creando una spece di puntatore jolly (che diventa int se punta un int, un double se punta a un double, ecc...)

PS. per il main() solitamente si usa int con 0 come valore di ritorno.
es.
int main()
{
.....
return 0;
}
Ultima modifica effettuata da steve__92 29/08/09 17:50
aaa
29/08/09 17:56
giuseppe93
Ciao!! le funzioni servono per evitare di scrivere più volte la stesso codice. in questo esercizio non serve, infatti è utilizzata solo una volta ma se ti capita di scrivere un programma dove devi disegnare qualcosa come il campo di battaglia navale e ogni per volta per inserire una nave devi cancellare e ridisegnare tutto allora lì si che ti serve una bella funzione che disegna il campo!!
Ultima modifica effettuata da giuseppe93 29/08/09 17:59
aaa
29/08/09 18:00
cip
Grazie!
Però...scusate l'ignoranza, sono alle prime armi con c++....
....se non deve restituirmi alcun valore perchè quando eseguo il programma ottengo lo scambio?:-?:(
aaa
29/08/09 18:10
giuseppe93
in verità per
Postato originariamente da Pippo_94:

la funzione non ritorna alcun valore...


si intende che il return alla fine della tua void non restituisce nessun valore!
aaa
29/08/09 18:15
steve__92
Postato originariamente da cip:

Grazie!
Però...scusate l'ignoranza, sono alle prime armi con c++....
....se non deve restituirmi alcun valore perchè quando eseguo il programma ottengo lo scambio?:-?:(


questa qui
void scambia(int& a,int& b)
è una funzione con chiamata per indirizzo, se sei alle prime armi nel vero senso della parola ti conviene aspettare prima di impararla bene, se invece è un pò che pratichi il c++ ti conviene impararla perchè è molto utile.

se usi una funzione normale (senza la '&' nei parametri della funzione) non cambieresti il valore della variabile 'x' e 'y', ma cambieresti il valore della variabile 'a' e 'b' (che esistono solo dentro la funzione 'void scambia(int a, int b)' ) mentre mettendo la '&' tu dici che 'a' e 'b' sono 'x' e 'y' che è ben diverso da dire che hanno solo lo stesso valore (se avessero solo lo stesso valore quando cambio il valore a una variabile l'altra non cambia).
quindi se te cambi direttamente il valore della variabile x e y non c'è bisogno di far ritornare un valore.

capito?

PS. al posto di usare printf e scanf usa cout e cin che sono molto più facili da usare (scanf e printf si usavano nel c).
Ultima modifica effettuata da steve__92 29/08/09 18:18
aaa
29/08/09 18:32
cip
Ho usato printf e scanf perchè li usa la mia prof....
Scusatemi ma ...sulla funzione void non mi è ancora chiaro.....
Perchè ho provato ad eseguire questo e mi da la stessa cosa


/*QUESTO PROGRAMMA USA UNA FUNZIONE PER SCAMBIARE DUE NUMERI DATI*/
#include <stdio.h>
#include <stdlib.h>
int scambia(int&,int&;);
main()
{int x,y;
printf("\ndammi un numero reale x=";);scanf("%d",&x);
printf("\ndammi un numero reale y=";);scanf("%d",&y);
printf("\n\n ecco i numeri prima dello scambio: ";);
printf("\n\n x=%d e y=%d" ,x,y);
scambia(x,y);
printf("\n\n ecco i numeri dopo lo scambio:%d %d ",x,y);
return 0; }
int scambia(int& a,int& b)
{int aux;
aux=a;a=b;b=aux;
return 0; }

:(:( Xchè?
aaa