webForumDet fria alternativet

Returnera array

4 svar · 239 visningar · startad av Thomson

ThomsonMedlem sedan feb. 200177 inlägg
#1

Hejsan!

Jag undrar ifall det går att returnera en char-array i c++?

har inte lyckats...

// Thomas

BeatboxMedlem sedan okt. 20013 217 inlägg
#2
char* CharArrayRetur(int size)
{
 return new (sizeof(char) * size);
}

void main()
{
  char* x = CharArrayRetur(10);
}
ThomsonMedlem sedan feb. 200177 inlägg
#3

Tack för svaret, men jag var lite otydlig.
Jag vill returnera detta:
char* text[2]

t.ex return text;

BeatboxMedlem sedan okt. 20013 217 inlägg
#4

Då får du allokera nutt minne på Heapen och kopiera innehållet i text2 till det nya minnesblocket och returnera en pekare till det nya minnesblocket. Din variabel text2 ligger lokalt på stacken undertiden du är kvar i funktionen.

Sang-draxMedlem sedan juli 2002581 inlägg
#5

Det går alltså inte att returnera arrayer i C++.

Men:

Man returnera en pekare

char* foo()

Man kan returnera en container

vector<char> foo()

Man kan faktiskt också returnera en referens till en array:

 
char (&foo())[20]
{
    static char arr[20];
    strcpy(arr,"Sang-drax");
    return arr;
}

int main
{
  cout << foo();
}
123 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)