Kommer jag inte ihåg hur man gör, och kan inte hitta nån vettig förklaring genom simpel googling, så jag vänder mig än en gång till wF :e Vill alltså returnera en array
char Tolka(Spelare Gubbe[], nPos)
{
//massa trams
return Value[3];
}
5 svar · 301 visningar · startad av pettsson
Kommer jag inte ihåg hur man gör, och kan inte hitta nån vettig förklaring genom simpel googling, så jag vänder mig än en gång till wF :e Vill alltså returnera en array
char Tolka(Spelare Gubbe[], nPos)
{
//massa trams
return Value[3];
}
Du kan inte returnera en hel array, eftersom det är en samling data på den lilla lokala stacken som funktionen allokerat. Mao alla variabler som du skapar i en funktion går förlorade när funktionen går ur scope, såvida du inte skapat utrymme dynamiskt för dem, men det är nog inte fallet här ;)
Så: Du skriver en sak i din rubrik och gör en helt annan i din kod... vad är det du vill? Vill du bearbeta en array eller vill du returnera ett värde ut en viss post i arrayen? Ska du bearbeta en array blir det till att ta med den avsedda arrayen in i funktionen via parameterlistan (char *arr eller char arr[]) och sen bearbeta arrayen i funktionen. När funktionen terminerat är din array bearbetad och klar utan att du returnerat den (man arbetar med adressen till den array som fanns innan funktionen anropades). Vill du bara returnera ett värde ur en viss post gäller din kod.
Ehum... Lite fel där uppe :OO Det som ska returneras är en char array med 3 element, inte det tredje elementet. Funktionen kommer köras många gånger, och jag tänkte återanvända samma array hela tiden, hur gör jag? var alltså frågan :)
Ok..
/**************
* ett exempel
**************/
void foo(Spelare Gubbe[], char *arr, nPos){
arr[0]='O;
arr[1]='K';
arr[2]='\0';
}
int main(){
Spelare myGubbe[555];
char enArray[3];
foo(myGubbe,enArray,555);
cout << enArray << endl; //skriver ut "OK"
return 0;
}
Ah, perfekt! :D Tackar tackar
:)