[Powered by Google Translate] CHRIS GERBER: En funksjon er en rekke trinn i en
større program, som er vanligvis ment å bli kalt
flere ganger og fra flere andre steder i
programmet.
Ved oppretting av en C funksjonen, er en av kravene til
angi en returverdi type.
Det enkleste tilfellet er en situasjon der den anropende
koden er ikke opptatt med resultatet av funksjonen.
Dette kan være tilfelle når vi skriver data til
brukerens skjerm, som med printf.
I dette tilfellet, kan vi erklære en returverdi
å være av typen ugyldige.
Bruke ugyldig forteller ganske enkelt kompilatoren at ingen
verdien vil bli returnert.
La oss se hvordan dette ser ut.
>> La oss si at vi har en funksjon som heter say_hello at
tar ett argument.
Vi passerer det en persons navn, og det vil vise en hilsen
på skjermen.
Navnet vil være av type char *.
Og vi vil presisere at som argument.
Min søknad trenger ikke å vite hva som ble trykt, eller hvis det
ble trykt.
Så returverdien vil være av typen ugyldig.
Denne funksjonen kan skrive til skjermen med en kommando som
printf ("Hello,% s \ n
", Navn);.
Hilsenen vises og kontroll vil bli sendt
tilbake til den som ringer koden.
En ting å merke seg er at når returverditype er ugyldig,
du trenger ikke å inkludere en avkastning
uttalelse i funksjon.
Hvis du velger å inkludere en, inkluderer ikke en returverdi
som et argument.
>> I noen tilfeller er det fornuftig å returnere en
verdi fra en funksjon.
La oss si at vi skulle skrive en funksjon som heter add_floats.
Vi passerer det to argumenter, både flyter,
kalt første og andre.
Og det vil fortelle oss hva summen av disse flyter er.
Vi vet at hvis vi legge til to flyter sammen, resultatet
vil være en flåte.
Gitt at vi velger en retur type float.
Denne funksjonen vil utføre denne beregningen og returnere
verdiene i en uttalelse som retur
første + andre;.
Når kontroll er gått tilbake til den anropende koden,
resultatverdien er nå tilgjengelig for denne koden.
Vi kan lagre denne verdien slik: float resultat =
add_floats (3,14, 1,62
);.
Resultatet i dette tilfellet ville nå inneholde verdien 4,76.
>> Som en påminnelse, flytpunktverdier er upresise.
Så hvis dette var en økonomisk beregning, ved hjelp av dollar og
cent, kan vi ønsker å vurdere en presis datatype som
int og utføre beregningen i pennies.
>> En annen sak der vi ønsker å returnere en verdi fra en
Funksjonen er når vi ønsker å vite om en funksjon var
vellykket.
Hvis det ikke var vellykket, kan vi også ønsker å vite hva slags
Det oppstod.
La oss si at vi prøver å åpne en fil på disken for å telle
antall tegn i den.
Hvis filen ikke kan åpnes, vil vi være i stand til å stoppe og
fortelle brukeren om problemet.
>> Vi kaller funksjonen count_file_chars og det vil
ta ett argument.
Vi vil passere i navnet på filen ved hjelp av en
char * kalles filnavn.
Denne funksjonen kan se noe sånt som dette.
I dette eksempelet, vil vi forvente at antall returnerte til
være 0 eller mer.
Dette etterlater oss de negative heltall til
bruke som sentinel verdier.
En sentinel verdi er rett og slett en spesiell verdi som ikke er
legitime data, men formidler informasjon.
Her, hvis jeg kommer tilbake en -1 til ringer koden, jeg
faktisk sender meldingen at en feil oppstod under
prøver å få tilgang til filen.
Jeg kunne da sjekke at returverdien å avgjøre om min
funksjonskallet var vellykket.
Hvis nummeret var 0 eller høyere, ville jeg vite
Antallet tegn i filen.
Hvis imidlertid antallet var mindre enn 0, kunne jeg rett og slett
ut at et problem hadde oppstått.
En avveining å vurdere er at ved å reservere alle
negative verdier som sentinel verdier antar dette er en
32-bits heltall, har jeg egentlig tatt bort rundt
2000000000 mulig avkastning verdier.
>> Returverdi typer er et av de viktigste elementene i
funksjonskall.
Forhåpentligvis denne korte oversikten har hjulpet deg tenke
tre viktige typer: void, resultat verdier, og sentinel verdier,
og når hver av de tre kan være
hensiktsmessig i koden.
Takk for å se.