[Powered by Google Translate] CHRIS GERBER: Una funzione è una serie di operazioni all'interno di un grande programma, che di solito è destinato a essere chiamato più volte e da più altri punti il programma. Quando si crea una funzione C, uno dei requisiti è specificare un tipo di valore di ritorno. Il caso più semplice è una situazione in cui il chiamante codice non riguarda il risultato della funzione. Questo potrebbe essere il caso quando si stampano dati al dell'utente display, come con printf. In questo caso, siamo in grado di dichiarare un valore di ritorno essere di tipo void. Utilizzo di vuoto dice semplicemente al compilatore che non valore verrà restituito. Vediamo come si presenta. Diciamo che abbiamo una funzione chiamata say_hello che accetta un argomento. Ci si passa il nome di una persona e verrà visualizzato un messaggio di saluto sullo schermo. Il nome sarà di tipo char *. E ci precisa che come argomento. La mia applicazione non ha bisogno di sapere che cosa è stato stampato o se stato stampato. Quindi, il valore restituito sarà di tipo void. Questa funzione può stampare lo schermo con un comando come printf ("Ciao,% s \ n ", Nome);. Il saluto viene visualizzato e il controllo verrà passato tornare al codice chiamante. Una cosa da notare è che quando il tipo di valore di ritorno è nullo, non è necessario includere un ritorno dichiarazione nella funzione. Se si sceglie di includere uno, non si include un valore di ritorno come argomento. In alcuni casi, ha senso restituire un valore da una funzione. Diciamo che stavamo scrivendo una funzione chiamata add_floats. Ci passare due argomenti, entrambi galleggianti, chiamato prima e seconda. E ci dirà quello che la somma di tali carri è. Sappiamo che se si aggiungono due galleggianti, il risultato sarà un galleggiante. Dato che, abbiamo scelto un tipo di ritorno del galleggiante. Questa funzione effettua il calcolo e restituire i valori in una dichiarazione come ritorno primo + secondo;. Quando il controllo viene restituito al codice chiamante, il valore risultante è ora disponibile per il codice. Siamo in grado di memorizzare il valore in questo modo: float risultato = add_floats (3.14, 1.62 ). Risultato in questo caso sarebbe ora contenere il valore 4.76. Come promemoria, i valori in virgola mobile sono imprecisi. Quindi, se questo è stato un calcolo finanziario e utilizzando i dollari e centesimi, si può prendere in considerazione un tipo preciso di dati come ad esempio int ed eseguire il calcolo in centesimi. Un altro caso in cui si vorrebbe restituire un valore da un funzione è quando si vuole sapere se una funzione è stata successo. Se non ha avuto successo, si potrebbe anche voler sapere che tipo di errore. Diciamo che stiamo cercando di aprire un file su disco per contare il numero di caratteri in esso. Se il file non può essere aperto, vogliamo essere in grado di fermare e informare l'utente del problema. Chiameremo i nostri count_file_chars funzione e lo farà richiede un argomento. Ci passare il nome del file utilizzando un char * nome del file chiamato. Questa funzione potrebbe essere simile a questa. In questo esempio, ci si aspetterebbe il conteggio restituito essere 0 o più. Questo ci lascia i numeri interi negativi utilizzare come valori sentinella. Un valore sentinella è semplicemente un valore speciale che non è dati legittimi ma non trasmettere le informazioni. Ecco, se dovessi tornare un -1 al codice chiamante, sono inviare effettivamente il messaggio che un errore si è verificato durante tenta di accedere al file. Ho potuto quindi verificare che il valore restituito per determinare se il mio chiamata di funzione ha avuto esito positivo. Se il numero è 0 o maggiore, vorrei conoscere il numero di caratteri nel file. Se, tuttavia, il numero è inferiore a 0, si potrebbe semplicemente stampa che un problema si era verificato. Un trade-off da considerare è che, riservando tutti i valori negativi come valori sentinella, supponendo che questo è un Intero a 32 bit, ho tolto essenzialmente intorno 2000000000 possibili valori restituiti. Tipi di valori di ritorno sono uno degli elementi più importanti di funzioni chiamate. Spero che questa breve panoramica ha aiutato a pensare tre tipi principali: void, valori dei risultati, e valori sentinella, e quando ciascuna delle tre potrebbe essere appropriato nel codice. Grazie per la visione.