[Powered by Google Translate] CHRIS GERBER: Mae swyddogaeth yn gyfres o gamau o fewn rhaglen fwy, a bwriedir fel arfer i gael ei alw sawl gwaith ac o leoliadau eraill lluosog yn y rhaglen. Wrth greu swyddogaeth C, un o'r gofynion hyn yw pennu math dychwelyd gwerth. Mae'r achos symlaf yw sefyllfa lle mae'r galw Nid yw cod yn ymwneud â chanlyniad y swyddogaeth. Gallai hyn fod yn wir pan fyddwn yn argraffu data i'r arddangos defnyddiwr, fel gyda printf. Yn yr achos hwn, gallwn ddatgan gwerth dychwelyd i fod o fath ddi-rym. Gan ddefnyddio gwag yn syml yn dweud wrth y compiler nad oes unrhyw Bydd gwerth yn cael eu dychwelyd. Gadewch i ni weld beth mae hyn yn edrych fel. Lets 'ddeud bod gennym swyddogaeth o'r enw say_hello y yn cymryd un ddadl. Byddwn yn ei throsglwyddo enw'r person a fydd yn dangos cyfarchiad ar y sgrin. Bydd yr enw o * fath torgoch. A byddwn yn nodi fod y ddadl. Nid yw fy cais oes angen i wybod beth oedd yn ei hargraffu neu os yw'n ei hargraffu. Felly, bydd y gwerth dychwelyd yn ddi-rym o fath. Gall hyn swyddogaeth argraffu at y sgrîn gyda meistrolaeth fel printf ("Helo,% s \ n ", Enw);. Bydd y cyfarchiad yn cael ei arddangos a bydd rheolaeth yn cael ei basio gefn at y cod galw. Un peth i'w nodi yw bod pan fydd y datganiad math o werth yn ddi-rym, Nid oes angen i chi gynnwys dychwelyd datganiad yn y swyddogaeth. Os byddwch yn dewis i gynnwys un, peidiwch â chynnwys gwerth dychwelyd fel dadl. Mewn rhai achosion, mae'n gwneud synnwyr i ddychwelyd gwerth o swyddogaeth. Gadewch i ni ddweud ein bod yn ysgrifennu swyddogaeth o'r enw add_floats. Byddwn yn ei throsglwyddo dwy ddadl, y ddau fflotiau, enw cyntaf a'r ail. A bydd yn dweud wrthym beth yw swm y rhai arnofion yn. Rydym yn gwybod bod os ydym yn ychwanegu dau arnofion at ei gilydd, mae'r canlyniad fydd yn arnofio. O ystyried hynny, rydym yn dewis math dychwelyd arnofio. Bydd y swyddogaeth hon yn perfformio y cyfrifiad hwn a'i ddychwelyd y gwerthoedd mewn datganiad fel dychwelyd 1 + ail;. Pan fydd rheolaeth yn cael ei drosglwyddo yn ôl i'r cod galw, y arwain gwerth yn awr ar gael at y cod hwnnw. Gallwn storio gwerth hwn fel hyn: canlyniad arnofio = add_floats (3.14, 1.62 );. Byddai canlyniad yn yr achos hwn bellach yn cynnwys y gwerth 4.76. I'ch atgoffa, gwerthoedd pwynt arnawf yn anfanwl. Felly os yw hyn yn gyfrifiad ariannol, gan ddefnyddio ddoleri a cents, efallai y byddwn am ystyried math data union fel int a pherfformio y cyfrifiad yn geiniogau. Achos arall lle y byddem eisiau dychwelyd gwerth o swyddogaeth yw pan rydym eisiau gwybod os yw swyddogaeth yn llwyddiannus. Os nad oedd yn llwyddiannus, efallai y byddwn hefyd eisiau gwybod pa fath o Digwyddodd gwall. Gadewch i ni ddweud ein bod yn ceisio agor ffeil ar ddisg i gyfrif y nifer o gymeriadau ynddo. Os na all y ffeil yn cael ei agor, rydym am fod yn gallu stopio a dweud wrth y defnyddiwr am y broblem. Byddwn yn ffonio ein count_file_chars swyddogaeth a bydd yn gymryd un ddadl. Byddwn yn pasio yn enw'r ffeil gan ddefnyddio torgoch * a elwir yn enw'r ffeil. Gallai'r swyddogaeth hon yn edrych rhywbeth fel hyn. Yn yr enghraifft hon, byddem yn disgwyl i'r cyfrif dychwelyd i fod yn 0 neu fwy. Mae hyn yn gadael y cyfanrifau negyddol i defnyddio fel gwerthoedd sentinel. Mae gwerth sentinel yn unig yw gwerth arbennig nad yw'n data dilys, ond yn cyfleu gwybodaeth. Yma, os wyf yn dychwelyd -1 i cod galw, yr wyf mewn gwirionedd yn anfon y neges bod gwall wedi digwydd wrth ceisio cael mynediad i'r ffeil. Gallwn wedyn sicrhau bod gwerth dychwelyd i benderfynu os yw fy galwad swyddogaeth yn llwyddiannus. Os yw'r nifer yn 0 neu fwy, byddwn yn gwybod y nifer o gymeriadau yn y ffeil. Os, fodd bynnag, roedd y nifer yn llai na 0, gallwn yn syml argraffu bod problem wedi digwydd. Un cyfaddawd i'w ystyried yw bod drwy gadw yr holl gwerthoedd negyddol fel gwerthoedd sentinel, gan dybio mae hyn yn 32-bit cyfanrif, rwyf wedi cymryd i ffwrdd yn y bôn o amgylch 2000000000 werthoedd dychwelyd posibl. Mathau gwerth Dychwelyd yn un o'r elfennau mwyaf pwysig o galwadau swyddogaeth. Gobeithio bod y trosolwg byr wedi eich helpu chi feddwl am tri math allweddol: ddi-rym, gwerthoedd canlyniad, a gwerthoedd sentinel, a phryd y gallai pob un o'r tri yn briodol yn eich cod. Diolch am wylio.