25. august 2002 - 16:42Der er
9 kommentarer og 3 løsninger
return og andet!
Hej folk her på eksperten. Jeg er begyndt på c++. Og kan ikke rigtigt forstå begrebet "return". hvorfor er der nogen gange man skal return en variabel eller lign. Og andre gange 0.
Jeg kna heller ikke forstå hvorfor der i nogle eksembler jeg har set står således når man "opretter" en funktion: int funktions(variabelnavn, variabelnavn). Hvorfor står der variabler i funktionens parentes...
Det kan godt være at jeg er en nybegunder men jeg vil gerne have det forklaret på dansk og helst af jer og ikke bare et link. Den der kan forklare mig de 2 ting får point.
hvis du skal bruge en funktion som skal ligge 2 tal sammen kunne du lave den sådan her:
int Add(int a, int b) { return a+b; }
og så vil du evt kalde den med dette:
int Svaret; Svaret = Add(5,7);
--------------
det int som er foran Add, fortæller at denne funktion returnerer en Integer(heltal), og variablerne a og b (Add(int a, int b)), er også begge integers, via dem kan du overføre 2 heltal(integers) til funktionen, funktion bliver så kaldt, og du kan tilgå de to tal som er blevet overført ved at bruge a og b i funktionen,
return a+b;
snakker lidt for sig selv, funktionen returnerer a+b, du kunne også sige:
Ordet 'return' anvendes helt ligefrem til at angive hvornår en given funktion skal returnere - dvs. afslutte og returnere sit resultat til den del af programmet, som aktiverede funktionen.
Som du selv har opdaget er der een datatype som en funktion kan returnere, der opfører sig anderledes end de andre - nemlig void. Hvis en funktion er deklareret med datatypen void, angiver det i C/C++ at funktionen ikke direkte returnerer en værdi.
Lad os tage det simple eksempel som ovenfor - en funktion der kan lægges to tal sammen, og returnere summen:
int addParm(int tal1, int tal2) { return tal1+tal2 };
Ordet 'int' foran funktionens navn ('addParm') angives at funktionen aflevere et resultat af typen integer, dvs. et heltal. De to variabler inden i parentesen efter funktionen navn, er såkaldte parametere, dvs. oplysninger som funktionen skal have "udefra" for at kunne løse sin opgave. Man kunne godt lave add funktionen uden hverken at overføre oplysninger eller modtage resultatet direkte:
svarende til den måde andre "gamle" programmeringssprog som f.eks. COBOL virker på. Forskellen på de to, kan man se når man skal bruge funktionen:
: int mitAtal1 = 2, mitBtal1 = 3, mitresultat1; int mitBtal1 = 6, mitBtal2 = 9, mitresultat2;
// Den funktion som får information overført, og aflevere et resultat mitresultat1 = addParm(mitAtal1, mitAtal2); mitresultat2 = addParm(mitBtal1, mitBtal2);
// Den funktion, som anvender de globale variabler tal1, tal2 og resultat tal1 = mitAtal1; tal2 = mitAtal2; addGlobal(); mitresultat1 = resultat; tal1 = mitBtal1; tal2 = mitBtal2; addGlobal(); mitresultat2 = resultat; :
Som du kan se, giver versionen med overført information og returnering af et resultat meget kortere kode, når funktionen skal anvendes. (Kortere kildetekstkode - maskinkoden er rent faktisk lidt kortere på versionen med globale variabler, fordi der ikke skal bruges "krudt" på at overføre parametrene til funktionen, loade dem i funktionen og overføre resultatet.)
Så for nu at opsummere:
Ad 1) Hvorfor return ? For at fortælle at funktionen *returnerer* et resultat AD 2) Hvorfor variabler inde i parentesen ? For at overføre information *til* funktionen
Man kan betragte en funktion som en maskine. De variable som står i parantesen efter funktionens navn er det, som puttes i maskinen. Når funktionen/maskinen i sin process støder ind i ordet return, stoppes funktionen og produktet/resultatet sendes ud af maskinen ved hjælp af nøgleordet return. Det der afgør om man skal returnere en variabel eller ej er hvad der står foran funktionens navn når man opretter den.
int funktions(int variabelnavn1, int variabelnavn2) { return variabelnavn1 + variabelnavn2; }
I dit tilfælde skal du således returnere en variabel af typen int (dvs. et heltal) Hvis du ikke ønsker at returnere nogen variabel, skal du erstatte returtypen med nøgleordet void således:
void funktions(int variabelnavn1, int variabelnavn2) { return; }
Under alle omstændigheder skal en funktion indeholde nøgleordet return, ellers er det umuligt at "stoppe maskinen" og man får således ikke noget produkt.
Som du kan se har jeg rettet lidt i din funktions prototype, som det hedder. Jeg har dels indsat et int foran hvert variabelnavn, idet man skal angive variablernes type, dels har jeg sørget for at variablerne ikke har samme navn, fordi det ikke er tilladt.
Jeg håber dette hjælper dig, nu har du i hvert fald fået nogen forskellige forklaringer ;-)
Ja Fair nok, havde egentligt ikke regnet med nogle point, med min lidt tågede forklaring mod tossens forklaring :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.