12. juli 2013 - 10:02Der er
5 kommentarer og 1 løsning
Hvordan laver man en funktion hvor de sidste argumenter evt. kan udelades (i C, ikke C++)?
Hej Eksperter
Mit spørgsmål er sikkert meget simpelt, men jeg kan bare ikke huske hvordan og kunne ikke finde svaret på nettet.
Jeg ønsker at lave en funktion hvor man evt kan udelade de sidste argumenter, som så bliver tildelt en defaultværdi. Se nedenstående eksempel hvor b tænkes at have en defaultværdien 3.
int testfunction(int a, int b){ ... return a*b; }
Hvis jeg skriver
c = testfunction(3,4);
returnerer funktionen som forventet 12 men hvis jeg skriver noget i stil med
c = testfunction(3);
er det tænkt at funktionen skal returnere 9 fordi b har default 3.
Hvis du er villig til at skrive en del kode, saa kan du bruge varargs.
Alternativt kan du bruge flere funktioner - som #1 siger saa understoetter C heller ikke function overlkoading, men man kan stadig definere flere funktioner med forskellige navne!
Den metode i C++ som Arne nævner syntes jeg nemlig godt jeg kunne huske fra for 15 år siden da jeg lærte C++. Men jeg kunne jo ikke forstå det ikke fungerede i C. Nå men så må jeg jo finde på en en el. anden snørklet metode i stil med 2 funktioner testfunction(int a) testfunctionproto(int a, int b)
God weekend fra Christian
P.s. Hvordan deler jeg nu 15 point mellem 2? Kan man på eksperten.dk øge pointgivning på sit spørgsmål?
P.p.s. Arne: Mange mange tak for alle de svar du har givet mig på dumme spørgsmål. Jeg havde jo ikke rodet med C i 15 år. Jeg bruger normalt kun PHP. I onsdags godkendte Nets vores Dankortløsning for hele Norden, så nu skulle det jo gerne ebbe lidt ud med spørgsmål for en tid.
Medens jeg endnu kun programerede i C havde jeg for vane at lave en masse macro'er til at løse dette problem
#define Testfunction(X) testfunction(X, 3)
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.
Det er blevet kaldt ”det største it-nedbrud i historien” og omkostningerne kan nemt løbe op i syv milliarder kroner: Men hvem skal betale for Crowdstrikes fejl?