[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.