Vector und Funktionsrückgabewerte



  • Was gebe hier genau zurück? return a;

    Die Adresse von a?

    #include <iostream>
    #include <vector>
    using namespace std;
    
    vector<int> func ( vector<int> &a )
    {
        a[0] = 100;
    
        cout<<"a addr: "<< &a[0] <<endl;
    
        return a;
    }
    
    int main()
    {
    int Array[] = {1,2,3};
    
    vector<int> var (Array,Array+sizeof(int) ) ;
    vector<int> ret ( 0 ,var.size() ) ;
    
    cout<<"call"<<endl;
    ret = func ( var );
    
    cout<<"var[0] addr: " << &var[0]<<endl;
    // var addr == a addr
    
    cout<<"addr: " << ret[0]<<endl; // Zeigt ret[0]; hier jetzt auf var[0] ?
    
    system("PAUSE");
    return 0;
    }
    


  • Mal abgesehen davon, dass Zeile 20 fragwürdig ist:
    Es wird einfach der Vector kopiert. Natürlich könnte der kopierte vector den gleichen Speicher mitbenutzen, solange nicht an einem der beiden vectors etwas geändert wird, in der Praxis wird er das aber vermutlich nicht tun.



  • Was gebe hier genau zurück?

    Schau in die Signatur der Funktion! Steht vor dem Funktionsnamen.


Anmelden zum Antworten