size_t

  • Themenstarter Themenstarter C152778
  • Beginndatum Beginndatum
C

C152778

Hallo zusammen !

Ich wollte gerne wissen, was es mit dem Typ size_t auf sich hat, der immer wieder in der C++ Standardbibliothek auftaucht?
Oft ist damit ein integer gemeint, warum aber wird dann ein neuer Typ size_t eingeführt und nicht direkt int angegeben?
Wofür steht das 't' am Ende?

Ich würde mich über eine Aufklärung freuen. :)

Schöne Grüße, Cyraid
 
Beispiel: Du kompilierst ein 64-bit Programm, das irgendwelche math. Berechnungen macht und dafür mehrere 64-bit Integer braucht, weil eben mit so großen Zahlen gerechnet.

Angenommen, du deklarierst jede Variable, die du dafür brauchst, als int.
Wäre ja kein Problem, würde funktionieren.

Jetzt aber brauchst du das gleiche Programm aber auch auf einem 32bit Betriebssystem und kompilierst deshalb den ganzen Quelltext nocheinmal für 32bit.

Das Problem dabei: Der Compiler macht für jedes "int" nun ein 32bit Integer;
dass für die Berechnung ja nicht reichen würde.

Jetzt könntest du den gesamten Quelltext durchgehen, egal wie riesig der ist, und bei jedem int überlegen, ob du dort ein 64bit nehmen musst oder ob du das normale 32bit-int lassen kannst

Damit das nicht passiert, definiert man beim Programmieren zB "berechnungszahl" als "int",
und statt "int meinezahl" schreibst du dann halt "berechnungszahl meinezahl".
Sieht fürs erste umständlich aus, aber wenn du das ganze dann als 32bit-Programm kompilierst, musst du nur an einer Stelle den Variablentyp anpassen.
 
@sheel: Danke für die sehr schöne ausführliche Erklärung ! :)

Wo kann ich sehen, wie size_t momentan gesetzt wurde?

EDIT: Und wofür steht das t am Ende von size_t ? Gibt es da eine gute Begründung ?

Schöne Grüße, Cyraid
 
Bei Visual Studio:
Rechtsklick auf size_t, "Gehe zu Definition von size_t"
Da bekommst du automatisch den richtigen Header an der Richtigen Stelle geöffnet

Schaut dann ungefähr so aus:
typedef unsigned int size_t;
Hier wäre zB unsigned int der Typ

Für was das t am Schluss steht, weiß ich selber nicht

Gruß
 
bzw:

C++:
   std::cout << sizeof(size_t) << std::endl;

gibt Infos darüber, aber sollte dich eigentlich nicht so interessieren.
 
Hi.

size_t ist der Typ der vom sizeof Operator zurückgegeben wird. Es ist als nicht-vorzeichenbehafteter integraler Typ definiert (im Gegensatz zu ssize_t) und repräsentiert etwas das eine Größe hat.

Das _t am Ende steht einfach für type, da size_t ein Typalias ist.

Gruß
 
Zurück