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