Hjælp før eksamen

Tags:    c++ java

Jeg sidder og skal til eksamen i C++. Det skal siges at jeg (endnu) er på begynder stadiet i C++ indlæringen :)

Jeg har et spørgsmål omkring funktioner og hvad de kan returnere.
Spørgsmålet lyder :

Kan en funktion returnere mere en 1 værdi ? I så fald hvordan ??

Mit svar er JA, og jeg er kommet frem til at det kan lade sig gøre ved hjælp af pointere. MEN jeg skal komme med et eksempel og er kørt lidt fast heri !!. Kan nogen give mig en lille SIMPEL stump kode på en funktion der ved hjælp af en pointer returnere mere end 1 værdi, med en smule //Kode kommentare ??. Så er jeg en lykkelig mand :)

På forhånd tak

Jacob



9 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
en funktion kan kun returnerer en værdi. Men, hvis du sendere pointere som parametre til et funktionskald kan denne funktion jo ændre på det data der ligger ved disse pointere, og på en måde derved returnerer flere ting på en gang. F.eks. kan du kigge på windows API kaldet GetWindowsDirectory der netop returnerer om kaldet lykkedes, og placerer data i en pointer brugeren selv har allokeret og angivet.

Mvh,

Thomas Nielsen



Ja en funktion kan god retunere mere end en værdi. Dette kan gøre på flere måder.

f.eks.

struct hmm
{
int ver1;
int ver2;
};

hmm test(int a=1,int b=2)
{
hmm temp;
temp.ver1=a;
temp.ver2=b;
return temp;
}

void main()
{
hmm temp1;
temp1=test();
}

eller via en klasse, og andre typer....

Vi a en ponter kan du gøre det meget simpelt med et cahr array.

f.eks.
#include<conio.h>
#include<iostream.h>

char * test1()
{
char chTemp[]="Hej med dig";
return chTemp;
}

void main()
{
cout<<test1();
int i;
}

Men en poniter ja her er også mage måder ...
f.eks.
// &pTal kan være et array
void test3(int &pTal)
{
pTal[0]=1;
pTal[1]=2;
}

void main()
{
int tal[10];
test3(tal);
}

Og her findes mange flere gidder ikke skrive flere. Skriv hvis disse ønskes....
Janus S. Andersen

*** Livet er smukt ***



Jeg sidder og skal til eksamen i C++. Det skal siges at jeg (endnu) er på begynder stadiet i C++ indlæringen :)

Jeg har et spørgsmål omkring funktioner og hvad de kan returnere.
Spørgsmålet lyder :

Kan en funktion returnere mere en 1 værdi ? I så fald hvordan ??

Mit svar er JA, og jeg er kommet frem til at det kan lade sig gøre ved hjælp af pointere. MEN jeg skal komme med et eksempel og er kørt lidt fast heri !!. Kan nogen give mig en lille SIMPEL stump kode på en funktion der ved hjælp af en pointer returnere mere end 1 værdi, med en smule //Kode kommentare ??. Så er jeg en lykkelig mand :)

På forhånd tak

Jacob


Du kan returnere en struct, men da du specifikt spørger til C++ ville jeg anbefale at lave et eksempel, hvor du returnerer et objekt.. Læs eventuelt op på copy-constructors, da de netop benyttes i denne forbindelse.




*** Livet er smukt ***

Jepper, med detaljerede, velovervejede indlæg som dette er livet sq smukt. Tak for en prima forklaring, det holder 200 % :D

Jeg vender tilbage med karakteren :)

Jacob




Bemaerkede lige foelgende program-stump ..


#include<conio.h>
#include<iostream.h>

char * test1()
{
char chTemp[]="Hej med dig";
return chTemp;
}

void main()
{
cout<<test1();
int i;
}



Dette kan sikkert godt kompilere og koerer sikkert ogsaa fint i de fleste tilfaelde, men indholdet af chTemp eksisterer ikke udenfor test1's scope. Det vil sige, at den pointer funktionen returnerer er ugyldig.

For at vaere sikker paa at din string eksisterer udenfor test1's scope, skal du enten allokere den paa heapen eller deklarere den saaledes "char* chTemp = "Hej med dig"", hviket betyder at den automatisk lagres som en statisk variabel i data-delen af din program.



Her har Mads ret....

Så hvis der skulle være noget spørg du bare Mads......


Mange tak for de 5 UP, selv om jeg nu blev meget mere glad for dit indlæg.... Håber du får en god karekter..... Og du må bare spørger hvis der er noget Mads har glemt eller ikke gidder svare på....

Køb en zebra - og kald den plet (bare noget jeg så her på udvikleren som lød sjovt)




// &pTal kan være et array
void test3(int &pTal)
{
pTal[0]=1;
pTal[1]=2;
}

void main()
{
int tal[10];
test3(tal);
}


Ikke for at traede i det, men manden skal jo trods alt bruge det til eksamen, og tilfaeldigvis bemaerkede jeg lige, at din funktion tager imod en reference. Skulle det ikke have vaeret en pointer, som variabel-navnet ogsaa antyder?

Funktions-deklarationen skulle saaledes se ud paa foelgende maade: void test3(int* pTal)





Jamen tak allesammen. Det er fedt at der er så en imødekommenhed i forumet her, det vil jeg klart anbefale til andre.

Forresten var jeg idag til den eksamen, og fik et 9 tal !! :p

Men jeg vender nok tilbage med flere spørgsmål, nu hvor der findes et seriøst sted at dele erfaringer og stille spørgsmål!!

Jacob



Jow jow, struct er en mulighed. En anden måde er at returnere en std::pair.

Fold kodeboks ind/udKode 


pair virker self kun hvis man vil returnere 2 værdier, men skal man det er den også nemmere at bruge end hvis man skal skrive sin egen struct hver gang.



t