[Powered by Google Translate] CHRIS GERBER: 'n Funksie is 'n reeks van stappe binne 'n
groter program, wat gewoonlik bedoel is om genoem te word
verskeie kere en uit verskeie ander plekke in
die program.
Wanneer die skep van 'n C-funksie, een van die vereistes is om te
spesifiseer 'n tipe return value.
Die eenvoudigste geval is 'n situasie waar die roeping
kode is nie gemoeid met die resultaat van die funksie.
Dit kan die geval wees wanneer ons die druk data aan die
gebruiker se vertoning, soos met printf.
In hierdie geval, kan ons 'n opbrengs waarde verklaar
te wees van die tipe leemte.
Die gebruik van void vertel net die samesteller dat geen
waarde sal teruggestuur word.
Kom ons kyk wat dit lyk soos.
>> Kom ons sê dat ons 'n funksie genoem say_hello wat
neem 'n argument.
Ons sal slaag dit 'n persoon se naam en dit sal vertoon 'n groet
op die skerm.
Die naam sal wees van tipe char *.
En ons sal spesifiseer dat as die argument.
My aansoek nie nodig het om te weet wat is gedruk, of indien dit
gedruk is.
So die terugkeer waarde sal wees van die tipe leemte.
Hierdie funksie kan druk op die skerm met 'n opdrag soos
printf ("Hello,% s \ n
", Naam);
Die groet sal vertoon word en beheer sal deurgegee word
terug na die roeping kode.
Een ding om daarop te let, is dat wanneer die terugkeer waarde tipe is nietig,
jy hoef nie 'n opgawe in te sluit
stelling in die funksie.
As jy kies om een ​​in te sluit, sluit nie 'n terugkeer waarde
as 'n argument.
>> In sommige gevalle, maak dit sin om terug te keer
die waarde van 'n funksie.
Kom ons sê dat ons 'n funksie genoem add_floats skryf.
Ons sal dit slaag twee argumente, beide dryf,
eerste en tweede.
En dit sal vir ons sê wat die som van daardie dryf is.
Ons weet dat as ons by te voeg twee dryf saam, is die resultaat
sal 'n float wees.
Gegee dat ek, ons kies 'n terugkeer tipe float.
Hierdie funksie sal hierdie berekening voer en terugkeer
die waardes in 'n stelling soos die terugkeer
eerste + tweede;
Wanneer beheer geslaag terug na die roeping kode, die
gevolglike waarde is nou beskikbaar vir die kode.
Ons kan hierdie waarde stoor soos so: float resultaat =
add_floats (3,14, 1,62
);
Resultaat in hierdie geval sou nou ook die waarde 4,76.
>> As 'n herinnering, floating point waardes is vaag.
So as dit was 'n finansiële berekening, deur gebruik te maak van dollars en
sent, ons wil 'n akkurate data tipe soos om te oorweeg
int en voer die berekening in pennies.
>> Nog 'n geval waar ons wil om terug te keer van 'n waarde van 'n
funksie is wanneer ons wil weet, as 'n funksie
suksesvol.
Indien dit nie suksesvol was nie, kan ons ook wil weet watter tipe
fout het voorgekom.
Kom ons sê dat ons probeer om 'n lêer oop te maak op die skyf om te tel
die aantal karakters wat in dit.
As die lêer kan nie geopen word nie, wil ons graag in staat wees om te stop en
vertel die gebruiker oor die probleem.
>> Ons sal bel ons funksie count_file_chars en dit sal
neem 'n argument.
Ons sal in die naam van die lêer met 'n
char * geroep lêernaam.
Hierdie funksie kan lyk iets soos hierdie.
In hierdie voorbeeld, sou ons verwag dat die telling teruggekeer na
0 of meer.
Dit laat ons die negatiewe heelgetalle
gebruik as brandwag waardes.
'N brandwag waarde is net 'n spesiale waarde wat nie
Wettige data, maar dit dra inligting.
Hier, as ek terugkeer 'n -1 aan die roeping kode, ek
eintlik die stuur van die boodskap dat 'n Fout het voorgekom terwyl
probeer om die lêer oop te maak.
Ek kan dan kontroleer dat die terugkeer waarde te bepaal of my
funksie oproep was suksesvol.
Indien die getal 0 of groter is, sal ek weet wat die
aantal van karakters in die lêer.
As, egter, was die getal minder as 0, ek kon net
druk dat 'n probleem het plaasgevind.
Een trade-off om te oorweeg, is dat deur die bespreking van al die
negatiewe waardes as brandwag waardes, met die veronderstelling dat dit is 'n
32-bis-heelgetal, ek het in wese weggeneem om
2 miljard moontlike terugkeer waardes.
>> Return value tipes is een van die belangrikste elemente van
funksie oproepe.
Hopelik sal hierdie kort oorsig het gehelp jy dink oor
drie belangrike tipes: void, gevolg waardes, en brandwag waardes,
en wanneer elk van die drie kan wees
toepaslike in jou kode.
Dankie vir jou kyk.