Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - void
Forum - C/C++ - void

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
cip (Normal User)
Newbie


Messaggi: 11
Iscritto: 29/08/2009

Segnala al moderatore
Postato alle 19:38
Sabato, 29/08/2009
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!!!:-?

PM Quote
Avatar
Pippo_94 (Normal User)
Rookie


Messaggi: 32
Iscritto: 18/05/2009

Segnala al moderatore
Postato alle 19:46
Sabato, 29/08/2009
Void devi lasciarlo, indica che la funzione non ritorna alcun valore...


- La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta. (Isaac Asimov)

- Non ho paura dei computer, ma della loro eventuale mancanza. (Isaac Asimov)
PM Quote
Avatar
steve__92 (Normal User)
Rookie


Messaggi: 22
Iscritto: 14/07/2009

Segnala al moderatore
Postato alle 19:48
Sabato, 29/08/2009
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 il 29/08/2009 alle 19:50
PM Quote
Avatar
giuseppe93 (Ex-Member)
Pro


Messaggi: 166
Iscritto: 02/08/2009

Segnala al moderatore
Postato alle 19:56
Sabato, 29/08/2009
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 il 29/08/2009 alle 19:59


:)
PM Quote
Avatar
cip (Normal User)
Newbie


Messaggi: 11
Iscritto: 29/08/2009

Segnala al moderatore
Postato alle 20:00
Sabato, 29/08/2009
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?:-?:(

PM Quote
Avatar
giuseppe93 (Ex-Member)
Pro


Messaggi: 166
Iscritto: 02/08/2009

Segnala al moderatore
Postato alle 20:10
Sabato, 29/08/2009
in verità per
Testo quotato

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!


:)
PM Quote
Avatar
steve__92 (Normal User)
Rookie


Messaggi: 22
Iscritto: 14/07/2009

Segnala al moderatore
Postato alle 20:15
Sabato, 29/08/2009
Testo quotato

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 il 29/08/2009 alle 20:18
PM Quote
Avatar
cip (Normal User)
Newbie


Messaggi: 11
Iscritto: 29/08/2009

Segnala al moderatore
Postato alle 20:32
Sabato, 29/08/2009
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è?

PM Quote
Avatar
steve__92 (Normal User)
Rookie


Messaggi: 22
Iscritto: 14/07/2009

Segnala al moderatore
Postato alle 20:41
Sabato, 29/08/2009
Testo quotato

Postato originariamente da 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è?



ed è normale che ti dia la stessa cosa...

return funziona così (spiegato proprio terra terra)

main()
{
x=valore_x(14)
}

valore_x(int a)
{
return a;
}

in questo modo dico che valore_x(14) è esattamente come dire 14


quindi nel tuo programma potresti sostituire  scambia(x,y);   con 0  (solo che grazie alla chiamata per riferimento riesce anche a scambiare il valore)

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo