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