Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Call by Reference von Arrays

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
09.09.2008, 17:12 Uhr
PaRu



ich möchte an eine methode einen array übergeben, der in der methode geändert wird. normalerweise mache ich sowas mit call by reference.
bloss bei einem array kommt mir das so merkwürdig vor (parameter definition der funktion: *&).
anbei ein kleines beispiel, dass auch läuft:

C++:
#include <string>
#include <complex>
#include <exception>


int testMethod( std::complex<double>**& array ) {

    int n = 3;
    array = new std::complex<double>*[ n ];
    for( int i = 0; i < n; i++ ) {
        array[i] = new std::complex<double>[ n ];
        for( int k = 0; k < n; k++ )
            array[i][k] = std::complex<double>( i, k );
    }
    return n;
}

int main( int argc, char *argv[] ) {

    int n;
    std::complex<double>** array1;

    n = testMethod( array1 );

    for( int i = 0; i < n; i++ ) {
        for( int k = 0; k < n; k++ )
            std::cout << "\t" << array1[i][k];
        std::cout << std::endl;
    }
    delete( array1 );

    return EXIT_SUCCESS;
}


wenn ich den array erstelle, erhalte ich doch einen zeiger auf den array. wieso reicht es nicht aus nur diesen an die methode zu übergeben?
--
Gruß Patrick
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.09.2008, 21:41 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Die Methode arbeitet auf einer Kopie (die beim Aufruf der Methode erstellt wird...)

Wenn du nun dieser Kopie etwas "neues" zuweist geht das verloren wenn die Kopie nach Beenden der Methode gelöscht wird. Wenn du hingegen eine Adresse übergibts (nichts anderes ist ja ein Zeiger oder eine Referenz) dann kann du der Kopie die auf was "zeigt" problemlos was neues innerhalb der Mehtode zuweisen, denn das worauf die Kopie zeigt existiert ja auch noch nachdem die Methode "durchgelaufen ist"...
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 09.09.2008 um 21:42 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.09.2008, 22:37 Uhr
ao

(Operator)


Warum nimmst du kein std::vector<std::complex> >?

(Beachte den Blank zwischen den beiden '>', sonst ist das ein Syntaxfehler).
 
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: