[Powered by Google Translate] CHRIS GERBER: En funktion er en række trin i en
større program, som normalt er beregnet til at blive kaldt
flere gange og fra flere andre steder i
programmet.
Når du opretter en C-funktion, et af kravene er at
angive en returværdi type.
Det enkleste tilfælde er en situation, hvor den kaldende
kode vedrører ikke resultatet af funktionen.
Dette kan være tilfældet, når vi udskriver data til
brugers display, som med printf.
I dette tilfælde kan vi erklære en returværdi
være af typen ugyldige.
Brug ugyldig simpelthen fortæller compileren, at der ikke
værdi vil blive returneret.
Lad os se hvad det ligner.
>> Lad os sige, at vi har en funktion kaldet say_hello at
tager et argument.
Vi passerer det en persons navn, og det vil vise en hilsen
på skærmen.
Navnet vil være af typen char *.
Og vi vil specificere, som argument.
Min ansøgning behøver ikke at vide, hvad der blev trykt, eller hvis det
blev trykt.
Så returværdien vil være af typen ugyldige.
Denne funktion kan udskrive til skærmen med en kommando
printf ("Hej,% s \ n
", Navn);.
Hilsenen vil blive vist og kontrol vil blive væltet
tilbage til den kaldende kode.
Én ting at bemærke er, at når returværditype er ugyldig,
du behøver ikke at indeholde et afkast
erklæring i funktionen.
Hvis du vælger at inkludere en, ikke omfatter en returværdi
som et argument.
>> I nogle tilfælde giver det mening at returnere en
værdi fra en funktion.
Lad os sige, at vi skulle skrive en funktion kaldet add_floats.
Vi passerer det to argumenter, begge flåd,
kaldet første og andet.
Og det vil fortælle os, hvad summen af ​​disse flåd er.
Vi ved, at hvis vi tilføjer to flydere sammen, bliver resultatet
være en flyder.
Da vælger vi et afkast type float.
Denne funktion vil udføre denne beregning og vende tilbage
værdierne i en erklæring som afkast
1. + sekunder.
Når styring overføres tilbage til den kaldende kode,
resulterende værdi er nu tilgængelig for denne kode.
Vi kan gemme denne værdi som så: float result =
add_floats (3,14, 1,62
).
Resultatet i dette tilfælde vil nu indeholde værdien 4,76.
>> Som en påmindelse, er kommeværdier upræcis.
Så hvis dette var en økonomisk beregning, ved hjælp af dollars og
cents, kan vi måske overveje en præcis datatype såsom
int og udføre beregningen i småpenge.
>> En anden sag, hvor vi ønsker at returnere en værdi fra en
Funktionen er, når vi ønsker at vide, om en funktion, var
vellykket.
Hvis det ikke lykkedes, kan vi også ønsker at vide, hvilken type
fejlen opstod.
Lad os sige, at vi forsøger at åbne en fil på disken for at tælle
antallet af tegn i det.
Hvis filen ikke kan åbnes, vi ønsker at være i stand til at stoppe op og
fortælle brugeren om problemet.
>> Vi ringer til vores funktion count_file_chars og det vil
tage ét argument.
Vi passerer i navnet på filen ved hjælp af en
char * kaldet filnavn.
Denne funktion kan se noget som dette.
I dette eksempel, ville vi forvente Greven vendte tilbage til
være 0 eller mere.
Dette efterlader os de negative heltal til
anvendelse som kontroldyr værdier.
En sentinel værdi er simpelthen en særlig værdi, der ikke
legitime data men videregive information.
Her, hvis jeg vender tilbage en -1 til den kaldende kode, er jeg
faktisk sender det budskab, at der opstod en fejl under
forsøger at få adgang til filen.
Jeg kunne så kontrollere, at returværdien at afgøre, om min
Funktionen opkaldet blev modtaget.
Hvis nummeret var 0 eller derover, ville jeg vide det
Antallet af tegn i filen.
Hvis imidlertid antallet var mindre end 0, I kunne simpelthen
udskrive, at et problem var forekommet.
Et trade-off til at overveje, er, at ved at forbeholde alle
negative værdier som sentinel værdier er under forudsætning af dette en
32-bit heltal har jeg hovedsageligt taget væk omkring
2 milliarder mulige returværdier.
>> Retur værdi typer er en af ​​de vigtigste elementer i
funktionskald.
Forhåbentlig vil denne korte oversigt har hjulpet dig tænker
tre centrale typer: void, resultatværdier, og sentinel værdier,
og når hver af de tre kan være
hensigtsmæssigt i din kode.
Tak for at se.