[Powered by Google Translate] CHRIS GERBER: En funktion är en serie av steg inom en
större program, som vanligen är avsedda att kallas
flera gånger och från flera andra platser i
programmet.
När man skapar en C-funktion, är ett av kraven för att
ange en typ returvärde.
Det enklaste fallet är en situation där den uppringande
koden inte avser resultatet av funktionen.
Detta kan vara fallet när vi skriver data till
användarens skärm, som med printf.
I det här fallet kan vi förklara ett returvärde
vara av typen ogiltigt.
Använda void bara berättar kompilatorn att inga
värdet kommer att returneras.
Låt oss se vad detta ser ut.
>> Låt oss säga att vi har en funktion som kallas say_hello att
tar ett argument.
Vi ska ge det en persons namn och det kommer att visa en hälsning
på skärmen.
Namnet kommer att vara av typen char *.
Och vi kommer att ange att som argument.
Min ansökan behöver inte veta vad som trycktes eller om det
trycktes.
Så returvärdet kommer att vara av typen void.
Denna funktion kan skriva till skärmen med ett kommando som
printf ("Hej,% s \ n
", Namn);.
Hälsningen visas och kontrollen kommer att föras
tillbaka till den anropande koden.
En sak att notera är att när returvärdet typen är ogiltig,
Du behöver inte ta med en avkastning
uttalande i funktion.
Om du väljer att inkludera en, inkluderar inte ett returvärde
som ett argument.
>> I vissa fall är det klokt att returnera en
värde från en funktion.
Låt oss säga att vi skrev en funktion som kallas add_floats.
Vi ska ge det två argument, båda flottar,
kallas första och andra.
Och det kommer att berätta vad summan av dessa flöten är.
Vi vet att om vi lägger två flottörer tillsammans, resultatet
kommer att vara en flottör.
Med tanke på att vi väljer en returtyp av flottören.
Denna funktion kommer att utföra denna beräkning och återgå
värdena i ett uttalande som avkastning
1:e + sekund,.
När styrningen övergår tillbaka till den anropande koden,
resulterande värdet är nu tillgängligt för denna kod.
Vi kan lagra detta värde så här: float resultat =
add_floats 3,14 (, 1,62
).
Resultatet i detta fall skulle nu innehålla värdet 4,76.
>> Som en påminnelse, flyttal är oprecisa.
Så om detta var en ekonomisk beräkning med hjälp dollar och
cent, kan vi vill överväga en exakt datatyp som
int och utföra beräkningen i småpengar.
>> Ett annat fall där vi vill returnera ett värde från en
funktion är när man vill veta om en funktion var
framgångsrik.
Om det inte lyckas kan vi vill också veta vilken typ av
fel uppstod.
Låt oss säga att vi försöker öppna en fil på disk att räkna
antalet tecken i den.
Om filen inte kan öppnas, vill vi kunna stoppa och
tala om för användaren om problemet.
>> Vi kallar vår funktion count_file_chars och det kommer
ta ett argument.
Vi ska passera i namnet på filen med en
char * kallas filnamn.
Denna funktion kan se ut ungefär så här.
I detta exempel skulle vi förvänta oss att räkna tillbaka till
vara 0 eller mer.
Detta lämnar oss de negativa heltalen till
använda som kontrolldjur värden.
Ett sentinel värde är helt enkelt ett speciellt värde som inte är
legitima uppgifter men förmedla information.
Här, om jag återvänder en -1 till den anropande koden, jag
faktiskt skickar meddelandet om att ett fel uppstod när
försöker komma åt filen.
Jag kunde då kontrollera att returvärdet för att avgöra om min
funktionsanropet lyckades.
Om antalet var 0 eller mer, skulle jag veta
antal tecken i filen.
Om emellertid var antalet mindre än 0, kunde jag helt enkelt
ut att ett problem har uppstått.
En avvägning att tänka på är att genom att reservera all
negativa värden som indikatordjur värden, förutsatt att detta är ett
32-bitars heltal har jag tagit väsentligt ifrån runt
2 miljarder möjliga returvärden.
>> Returvärde typer är en av de viktigaste delarna av
funktionsanrop.
Förhoppningsvis denna korta översikt har hjälpt dig tänker
tre viktiga typer: void, värderingar resultat och värderingar Sentinel,
och när var och en av de tre kan vara
lämpligt i koden.
Tack för att titta.