Über Zeiger sizeof der Zeiger Adresse bekommen
-
Hi Stromberg,
der Vorschlag von Camper nimmt deiner Funktion jedoch jede Variabilität,
da nur noch Zeiger auf Arrays mit einer Größe von genau 11 akzeptiert werden.
Ich denke nicht, dass es das ist, was du willst.Gruß,
CSpille
-
für array gibts noch std::vector
-
@und:
CSpille schrieb:
Für die Verwendung mit anderen Datentypen würde ich std::vector<MyClass> vorschlagen.

Gruß,
CSpille
-
nur eine anmerkung
CSpille schrieb:
Hallo Stromberg,
du derefenzierst den Zeiger auf den char und fragst danach,
wie groß ein char ist. Ein char hat (afaik auf jedem Betriebssystem) die
Größe 1 Byte.ein char ist so groß wie ein byte, weil ein char ein byte ist. per definitionem.
-
Nein, ein char ist nicht immer 1 Byte (8 Bit) groß!
sizeof(char) liefert immer 1, aber trotzdem kann 1 char aus z.B. 4 Bytes bestehen.
sizeof der anderen Datentypen liefert dann immer einen Wert relativ zu sizeof(char).
-
Th schrieb:
Nein, ein char ist nicht immer 1 Byte (8 Bit) groß!
sizeof(char) liefert immer 1, aber trotzdem kann 1 char aus z.B. 4 Bytes bestehen.
sizeof der anderen Datentypen liefert dann immer einen Wert relativ zu sizeof(char).Schockierende Neuigkeit: Ein Byte ist auch nicht immer 8 Bit breit. Und der Standard (zumindest der C Standard, wenn es bei C++ anders sein sollte bitte berichtigen) definiert dass ein char ein Byte ist.
-
Ich zitiere mal Stroustrup, Die C++ Programmiersprache, 2.3.1 Variablen und Arithmetik:
Eine char-Variable hat die Größe, auf einem vorgegebenen Rechner ein Zeichen (üblicherweise ein Byte) aufzunehmen.
Man beachte das 'üblicherweise'.
Mit der Bezeichnung "Byte = 8 Bit" beziehe ich mich, auf die gebräuchliche Definition von Byte (s. Oktett): http://de.wikipedia.org/wiki/Byte
Auch wenn es noch andere Definitionen von Byte gibt...Weiterhin ist garantiert, daß ein char (zumindestens in C++) immer mindestens 8 Bit speichern kann (was nach der gebräuchlichen Defintion von Byte also bedeutet, daß ein char größer als ein Byte sein kann).
Besser ist es, man verwendet den Begriff Byte am besten gar nicht erst in Bezug auf Datentypengrößen, sondern spricht nur von x Bits.
-
O.K. dann zitiere ich halt mal den C++ Standard (ISO/IEC 14882:1998(E), First Edition):
1.7 The C++ memory model [intro.memory]
The fundamental storage unit in the C++ memory model is the byte. A byte is at least large enough to contain any member of the basic execution character set and is composed of a contiguous sequence of bits, the number of which is implementation-defined. ...
-
die stelle ist fast noch prägnanter:
C++ Standard ISO/IEC 14882:2003, Section 5.3.3 schrieb:
The sizeof operator yields the number of bytes in the object representation of its operand. [...] sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1;
-
Deswegen ist C und C++ auch deprecated, wie wir in einem anderen Thread gelernt haben.