[Powered by Google Translate] CHRIS Gerber: funkcija je niz koraka unutar
veći program, koji je obično namijenjen da se zove
više puta i iz više drugih lokacija u
Program.
Prilikom stvaranja C funkciju, jedan od uvjeta je da
navesti vrstu vrijednosti povratka.
Najjednostavniji slučaj je situacija u kojoj poziva
Kod se ne bavi rezultat funkcije.
To može biti slučaj kada smo ispisuje podatke na
Korisnički zaslon, kao i sa printf.
U tom slučaju, možemo proglasiti vrijednost povratnu
biti tipa prazninu.
Korištenje prazninu jednostavno govori prevodilac koji ne
Vrijednost će biti vraćen.
Idemo vidjeti kako to izgleda.
>> Recimo da imamo funkciju pod nazivom say_hello da
uzima jedan argument.
Mi ćemo proći to ime osobe i ona će se prikazati pozdrav
na zaslonu.
Naziv će biti tipa char *.
A mi ćemo navesti da kao argument.
Moj program ne treba znati što je tiskana ili ako ga
bio tiskan.
Dakle, vrijednost povratak će biti tipa prazninu.
Ova funkcija može ispisivati ​​na zaslonu pomoću naredbe poput
printf ("Hello,% s \ n
", Ime);.
Pozdrav će biti prikazano i kontrole će biti donesen
Povratak u zovete koda.
Jedna stvar je imati na umu da kada tip povratna vrijednost je nevažeća,
ne morate uključiti povratak
Izjava u funkciji.
Ako se odlučite uključiti jedan, ne uključuju vrijednost povratnu
kao argument.
>> U nekim slučajevima, ima smisla da se vrate
vrijednost iz funkcije.
Recimo da smo pisali funkciju pod nazivom add_floats.
Mi ćemo proći ga dva argumenta, oba plovi,
zove prvi i drugi.
I to će nam reći što je zbroj tih plovaka je.
Znamo da ako smo dodali dvije pliva zajedno, rezultat
će biti s plovkom.
S obzirom da smo izabrati povratak tip float.
Ova funkcija će izvesti taj izračun i povratak
vrijednosti u priopćenju poput povratka
prvi + drugi;.
Kada kontrola je prošao povratak na raspisivanje koda,
rezultiralo vrijednost je sada dostupan na tom kodu.
Mi može pohraniti tu vrijednost ovako: float rezultat =
add_floats (3,14, 1,62
);.
Rezultat je u tom slučaju sada će sadržavati vrijednost 4,76.
>> Kao podsjetnik, s pomičnim zarezom vrijednosti su neprecizni.
Dakle, ako je to financijski obračun, koristeći dolara, a
centi, možemo uzeti u obzir točan tip podataka, kao što su
int i obavlja obračun u novčića.
>> Drugi slučaj u kojem bismo željeli vratiti vrijednost iz
Funkcija je kad želimo znati je li funkcija bila
uspješna.
Ako to nije bila uspješna, mi svibanj također žele znati što tip
Došlo je do pogreške.
Recimo da smo pokušavate otvoriti datoteku na disk računati
broj znakova u njega.
Ako datoteka ne može biti otvorena, želimo biti u mogućnosti da se zaustavi i
korisniku reći o tom problemu.
>> Mi ćemo pozvati naše count_file_chars funkcija, a to će
uzeti jedan argument.
Mi ćemo proći u ime datoteke pomoću
char * filename zove.
Ova funkcija može izgledati nešto poput ovoga.
U ovom primjeru, mi bi se očekivati ​​Broj vratio
biti 0 ili više.
To ostavlja nam negativne prirodna broja na
koristiti kao sentinel vrijednosti.
Sentinel vrijednost je jednostavno posebna vrijednost koja nije
legitimne podaci, ali ne prenose informacije.
Evo, ako ja vratiti -1 do zovete koda, ja sam
zapravo šalje poruku da je došlo do pogreške, a
pokušava pristupiti datoteci.
I onda mogla provjeriti tu vrijednost povratnu utvrditi je li moj
Funkcija poziv bio uspješan.
Ako je broj bio 0 ili veća, ja bih znati
broj znakova u datoteci.
Ako je, međutim, broj je manji od 0, mogao bih jednostavno
ispisati da je došlo do problema.
Jedan trade-off za razmatranje je da rezervirajući sve
negativne vrijednosti kao sentinel vrijednosti, uz pretpostavku da je to
32-bitni cijeli broj, ja u suštini su odveli oko
2000000000 mogućem povratku vrijednosti.
>> Povratna vrijednost tipa su jedan od najvažnijih elemenata
funkcija poziva.
Nadam se da ovaj kratki pregled je pomogao mislite o
Tri ključne vrste: void, rezultat vrijednosti, i sentinel vrijednosti,
i kada je svaki od tri mogu biti
prikladno u svom kodu.
Hvala za gledanje.