Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Array

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
16.10.2006, 12:07 Uhr
~The Translator
Gast


Hallo,
ich wollte ein Array als Return-Wert einer Methode übergeben. Kurz gesagt:


C++:
funktion()
{
int blabla[10;]
...
return blabla;
}


void main()
{
int  blub[10];
blub = funktion();
}    



Soweit ich aber weiss, ist ein Array kein Rückgabewert für eine Methode.

Wie kann ich dann das Array zurückgeben?
Eigentlich eine Lapalie, aber ich musste es noch nie anwenden!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.10.2006, 12:27 Uhr
ao

(Operator)


Das ist leider in C nicht trivial. Lies mal diesen FAQ-Artikel hier. www.fun-soft.de/showtopic.php?threadid=1958&time=1160569936

Für eine C++-Lösung bietet sich an, anstelle des C-Arrays einen vector<int> zurückzugeben bzw. als Referenz rein- und wieder rauszureichen (vermeidet Copy-Konstruktion des Rückgabeobjekts).

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.10.2006, 20:03 Uhr
xXx
Devil


naja ob das so geht ist ja auch fraglich ... nen locales objekt und nen an ner falsche stehendes symikolon ... usw
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.10.2006, 20:14 Uhr
0xdeadbeef
Gott
(Operator)


Auf diese Art geht das in C nicht. Der normale Weg, das Problem zu umschiffen, ist die Übergabe des Arrays als Parameter, um dann da rein zu schreiben:

C++:
void funktion(int *dest, size_t n) // dest ist n Elemente groß
{
  int i;

  for(i = 0; i < n; ++i) {
    dest[i] = i; // nur so zum Beispiel
  }
}


int main() // main ist immer int
{
  int  blub[10];
  funktion(blub, 10);

  return 0;
}    


Die Länge mitzugeben, ist zwar technisch nicht zwingend erforderlich, aber good practice, da sich auf diese Art relativ zuverlässig buffer overflows vermeiden lassen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 16.10.2006 um 20:15 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: