[Powered by Google Translate] CHRIS Gerber: Një funksion është një seri hapash brenda një
Programi madhe, e cila është menduar zakonisht të quajtur
herë të shumta dhe nga vende të shumta të tjera në
programi.
Kur krijimin e një funksion C, një nga kërkesat është që të
specifikoni një lloj vlerë kthimit.
Rasti thjeshtë është një situatë ku quajtur
Kodi nuk ka të bëjë me rezultatin e funksionit.
Kjo mund të jetë rasti, kur ne jemi të dhënat për shtypjen
shfaqje e anëtarit, si me printf.
Në këtë rast, ne mund të deklarojë një vlerë të kthimit
të jetë e pavlefshme lloji.
Përdorimi i pavlefshëm thjesht tregon se asnjë përpilues
vlera do të kthehen.
Le të shohim se çfarë kjo duket si.
>> Le të themi se kemi një funksion të quajtur say_hello që
merr një argument.
Ne do të kalojë atë emrin e një personi dhe ajo do të shfaq një përshëndetje
në ekran.
Emri do të jetë i tipit char *.
Dhe ne do të specifikojnë se si argument.
Kërkesa ime nuk ka nevojë të dinë se çfarë është shtypur, ose në qoftë se ajo
është shtypur.
Pra, vlera e kthimit do të jetë e pavlefshme lloji.
Ky funksion mund të shtypura në ekran me një komandë si
printf ("Hello,% s \ n
", Emri);.
Përshëndetje do të shfaqet dhe të kontrollit do të kalojë
mbështetur në kodin e quajtur.
Një gjë të theksohet është se kur vlera e kthimit lloji është e pavlefshme,
ju nuk keni nevojë që të përfshijë një kthim
Deklarata në funksion.
Nëse ju vendosni për të përfshirë një, nuk përfshijnë një vlerë të kthimit
si një argumentit.
>> Në disa raste, kjo ka kuptim për të kthyer një
vlera nga një funksion.
Le të themi se ne kemi qenë të shkruar një funksion të quajtur add_floats.
Ne do të kalojë atë dy argumente, të dyja gjithandej,
quajtur i parë dhe i dytë.
Dhe kjo do të na tregoni se çfarë shuma e këtyre gjithandej është.
Ne e dimë se në qoftë se ne shtoni dy gjithandej së bashku, rezultatin
do të jetë një noton.
Duke pasur parasysh se, kemi zgjedhur një lloj të kthimit të noton.
Ky funksion do të kryejnë këtë llogaritje dhe të kthehet
vlerat në një deklaratë si kthim
parë + dytë;.
Kur kontrolli është duke kaluar përsëri në kodin e quajtur, të
rezultuar vlerë është tani në dispozicion për këtë kod.
Ne mund të ruajë këtë vlerë si kështu: rezultatin noton =
add_floats (3.14, 1.62
);.
Rezultati në këtë rast tani do të përmbajnë vlerën 4,76.
>> Si një kujtesë, vlerat decimal janë të pasakta.
Pra, nëse kjo ishte një llogaritje financiare, duke përdorur dollarë dhe
cent, ne mund të dëshirojnë të marrin në konsideratë një lloj të saktë të të dhënave të tilla si
int dhe për të kryer llogaritjen në pennies.
>> Një tjetër rast ku ne do të duan të kthehen një vlerë nga një
funksion është kur ne duam të dimë nëse një funksion është
suksesshëm.
Në qoftë se ajo nuk ishte e suksesshme, ne gjithashtu mund të duan të dinë se çfarë lloji i
gabim.
Le të themi se ne jemi duke u përpjekur për të hapur një skedar në disk për të numëruar
numri i karaktereve në të.
Nëse skedari nuk mund të hapen, ne duam të jetë në gjendje për të ndaluar dhe
tregoni përdorues lidhje me problemin.
>> Ne do të thërrasë count_file_chars tona funksion dhe kjo do
të marrë një argument.
Ne do të kalojë në emrin e file duke përdorur një
char * quajtur filename.
Ky funksion mund të duket diçka si kjo.
Në këtë shembull, ne do të presim që numërimi u kthye në
jetë 0 ose më shumë.
Kjo lë të na integers negativ për
përdorin si vlera sentinel.
Një vlerë Sentinel është thjesht një vlerë të veçantë që nuk është
Të dhënat legjitime, por nuk përcjellë informacion.
Këtu, në qoftë se unë të kthehet një -1 për kodin e quajtur, unë jam
në fakt dërguar mesazhin që hasur një gabim gjatë
duke u përpjekur për të hyrë në dosjen.
Unë pastaj mund të kontrolloni se kthimi i vlerës për të përcaktuar nëse mia
thirrje funksioni ishte i suksesshëm.
Nëse numri ishte 0 ose më e madhe, unë do të di
Numri i karaktereve në dosjen.
Në qoftë se, megjithatë, numri ishte më pak se 0, unë thjesht mund të
shkruar se një problem kishte ndodhur.
Një tregtar-off për t'u marrë parasysh është se duke rezervuar të gjithë
Vlerat negative si vlera Sentinel, duke supozuar kjo është një
32-bit numër i plotë, unë kam marrë në thelb larg rreth
2 miliardë vlerat e mundshme të kthimit.
>> Llojet vlerë kthimit janë një nga elementet më të rëndësishme të
thirrje funksion.
Shpresojmë se kjo pasqyrë të shkurtër ka ndihmuar ju mendoni rreth
Tre lloje kryesore: void, vlerat rezultat, dhe vlerat Sentinel,
dhe kur secili prej tre mund të jenë
përshtatshme në kodin tuaj.
Faleminderit për shikimin.