Dynamische Arrays in Funktionen



  • Hallo,
    mein Problem ist, dass Ich einen Zeiger an eine Funktion uebergebe und in der Funktion mit "new" Speicher aloziiere und danach das Array initialisiere.Wenn ich nun die Werte zur Kontrolle innerhalb der Funktion ausgebe funktioniert alles wunderbar, aber wenn ich es mit dem in main() uebergebenen Zeiger machen will, funktioniert es nicht richtig.hier mal ein Beispiel:

    //...
    
    void f(Type* type)  {
      //...
      type = new Type[size];
      //...
      type[0] = xyz;
      //usw. bis alles Werte zugewiesen wurden
      //...
      //wenn ich jetzt die Werte ausgeben will funktioniert es einwandfrei
      cout << type[0];
    };
    
    int main()  {
      Type* type;
      f(type);
      cout << type[0];
      //da kommt nur sinnloses Zeug raus, als ob die Zeiger auf zufaellige Speicheraddressen zeigen
    }
    

    Ich hoffe einer kann mir da weiterhelfen.

    MfG,
    me@me.me



  • //da kommt nur sinnloses Zeug raus, als ob die Zeiger auf zufaellige Speicheraddressen zeigen

    ist auch so!

    Obwohl du einen Zeiger der Funktion übergibst, ist das trotzdem Call By Value. Sobald du in der Funktion sagst type= new... hat das ganze nix mehr mit dem usprünglich übergebenden Zeiger zu tun.



  • void f(Type*& t) {
     t = new Type;
    }
    

    Man beachte das &-Zeichen.



  • oder einfach den guten alten Rückgabewert verwenden



  • Vielen Dank fuer die extrem schnellen Antworten!Es funktioniert jetzt auch problemlos und ich habe auch was neues dazugelernt.Also nochmals Danke.


Anmelden zum Antworten