Arraygröße bestimmen



  • Ich bin noch neu in C++ und habe ein - für euch sicher banales - Problem.
    Ich habe eine Funktion Abc, die die Länge eines übergebenen chars in Byte ausgeben soll. Das geht ja mit sizeof().
    In diesem Fall aber nicht. sizeof(*name) gibt stets 1 zurück und sizeof(name) gibts stets 4 zurück.
    Was mache ich falsch?
    PS: Ich will nicht mit der <string.h> arbeiten; ich will nur wissen, warum der sizeof()-Befehl hier nicht funktioniert.

    Abc("Hallo");
    
    void Abc(char * name)
    {
      cout << "Länge von name: " << sizeof(*name);
    }
    


  • sizeof bekommt einen Zeiger übergeben und gibt deshalb nicht die Größe des Strings sondern des Zeigers zurück. Wenn du hingegen sizeof(*name) schreibst übergibst du nur das erste zeichen welches dann auch nur ein Byte groß ist.



  • Ach so ist das.
    Und wie kriege ich hin, dass ich den ganzen String übergebe?



  • warum willst du das machen? du kannst mit dem Zeiger doch genauso arbeiten als hätest du den orgnial String. Wenn du unbedingt die byts haben willst nimm doch strlen(name)*4.



  • Warum gerade *4? Den hab ich jetzt nicht kapiert...

    Also du musst nicht das komplette Char-Array übergeben da, wie bereits gesagt, mit einem Zeiger genauso gut gearbeitet werden kann. Willst du die Länge herausfinden, kopieren, etc. nimm die hier dargestellten String-Funktionen (für Kopieren wäre das zusätzlich strcpy(str1,str2) und für das Vergleichen strcmp(str1,str2)).

    Die Länge eines Char-Arrays ist gleichzeitig auch die Anzahl seiner Bytes da ja Platz eines Characters == 1 Byte ist.

    MfG SideWinder



  • sorry, da hab ich wohl was durcheinander gebracht.


Anmelden zum Antworten