Funktioner! Hjælp igen :-)

Tags:    c++


Lige et dumt spørgsmål eller 2, så jeg kan blive klogere.

1.) En funktionsdefinition vil altid befinde over main() funktionen (ikke?).
Jeg har læst et sted at disse ikke har nogen body {}, men kom frem til et eksempel som dette med en simpel funktion som altså har en body.
Har jeg gjort noget galt? For normalt vil funktionsdefinitionen ende i semikolon;

Fold kodeboks ind/udKode 


2.) Kan man have forskellige typer i en funktion som f.eks.:

int myFunc(char myVar1, int myVar2, float myVar3);

eller er dette forkert?



Dumme spørgsmål findes ikke men kun dumme svar...

Du burde være i stand til at læse om det i et IDG hæfte eller noget til omkring en hund... ellers er nettet jo også et fint sted at finde sådanne svar :)


Se her:
Fold kodeboks ind/udKode 


Nu er jeg selv ny, men vil gerne hjælpe hvis jeg kan så:

1) Man kan vel godt sige at en funktion altid skal erklæres før main funktionen fo ellers kan main ikke finde funktionen... Om du så implementerer sammen med erklæringen eller efter main er ligegyldigt... Main skal bare vide at fnktioner som bliver kaldt i main eksisterer og det ved den kun hvis hvis funktionen erklæres før main.

2) Jada :)

Håber ikke jeg har sagt noget forkert ellers PM mig og sig fjols og en begrundelse ville være fin :)



Super! 1000 mange tak for hjælpen :D
Det var præcist det svar jeg ledte efter.

Sidste spørgsmål, for at se om jeg har forstået det rigtigt!

1.) erklæringen int Add(int, int); er dette det samme definition som "prototypefunktion"?
2.) Hvordan kaldes en funktion? (Se koden)

Prøv at tjekke mine kommentarer i koden:
Fold kodeboks ind/udKode 


på forhånd mange tak.



Indlæg senest redigeret d. 26.08.2008 20:09 af Bruger #13344
1) Prototypen er erklæringen. Definitionen er den kode du har i din Add-funktion du har under din main funktion i dit kodeeksempel.

2) Main kalder add som så bruger den overloadede operator i int typen til at addere x og y som så returneres.





Indlæg senest redigeret d. 26.08.2008 20:28 af Bruger #14086
BTW: Det er bad pratice at bruge using namespace std; da det kan give nogle grimme fejl, hvis man ikke er opmærksom!



1: int Add(int, int); er lige netop en prototype

2: Funktionen 'main' kalder funktionen 'Add' med parametrene '3' og '4'. Returværdien fra kaldet til 'Add' bliver skrevet til 'cout' objektet ved hjælp af '<<' operatoren.



1000 mange tak for svar. Det hjælper en hel del med forståelsen! :D



Er en prototype og en erklæring ikke det samme Robert????????

int Add(int, int); // Prototype! (og erklæring)????

int Add(int a, int b); // Erklæring! (og prototype)????

Er det ikke det samme???

Hvordan læser compileren en erklæring hvis det ikke er det samme som en prototype???? Formaterer den, den til en prototype fordi det ikke er nødvendigt for compileren at vide hvilke parameternavne der indgår i funktionen når den læser erklæringen, eller....???

Udsnit fra min C++ bog:

"Funktionserklæringen fortæller compileren om navnet, returtypen og typen af parametrene til funktionen. Erklæringen af en funktion kaldes dens prototype."

^Er det et falsk udsagn så...

Jeg blev bare lidt forvirret når Robert skriver at:
int Add(int, int); er lige netop en prototype.

Det får mig til at tænke om erklæring så ikke er det samme som prototypen.

Mit egentlige spørgsmål er så:
Er en erklæring og en prototype ikke det samme???? Som jeg tidligere har påstået i denne tråd.



Indlæg senest redigeret d. 27.08.2008 17:47 af Bruger #14086
t