webForumDet fria alternativet

Returnera en array

5 svar · 301 visningar · startad av pettsson

pettssonMedlem sedan jan. 20021 122 inlägg
#1

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];
}
PeWMedlem sedan juni 200010 432 inlägg
#2

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.

pettssonMedlem sedan jan. 20021 122 inlägg
#3

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 :)

PeWMedlem sedan juni 200010 432 inlägg
#4

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;
}
pettssonMedlem sedan jan. 20021 122 inlägg
#5

Ah, perfekt! :D Tackar tackar

PeWMedlem sedan juni 200010 432 inlägg
#6

  :)

127 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)