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