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.