char array durch vorhandenes char array initialisieren - geht nicht, warum?



  • hallo,

    ich habe nur eine kleine frage, die sufu hat mir leider nicht geholfen.

    char v[] = "Hello World\n";
    char* p = v;
    char o[] = v;

    warum funktioniert zeile drei nicht? müssen char arrays direkt bei der erzeugung initialisiert werden und dürfen somit nicht über ein bereits vorhandenes char array, welches man dem neuen array zuweist, initialisert werden?

    stehe auf dem schlauch, bin allerdings auch c++ neuling.

    ich danke schon einmal für antworten!



  • bei C-Arrays nimmt man memcpy, bzw. strcpy für C-Strings (char-arrays). Bei Arrays von C++-Objekten nimm std::copy.
    In dem Fall würd ich einfach std::string statt der char-arrays benutzen, da kommt das Problem garnicht erst auf.

    std::string v = "hello world\n";
    std::string o = v;
    


  • Da der Stack nixcht auf dem Heap erstellt wird (new, malloc etc) musst du eine feste Größe angeben die der Compiler imSpeicher bzw auf dem Stack reserviert.



  • Aber daß man mit einem Array kein weiteres Array initialisieren kann, ist schon ein wenig unlogisch.



  • vielen dank, die antworten haben mir hinreichend geholfen!



  • Für Arrays, die eine übliche Kopiersemantik besitzen und ihre Grösse leicht bestimmen lassen, gibt es std::tr1::array (oder boost::array , wenn keine TR1-Unterstützung vorhanden ist).

    Bei Zeichenketten rate ich zu std::string . Falls die Speicherung mehrerer gleicher Elemente beliebigen Typs benötigt wird, stellen die STL-Container eine Möglichkeit dar.


Anmelden zum Antworten