|
![ein Kapitel weiter](../weiter.gif)
Dieser Operator gibt uns, wie der Name schon sagt, Auskunft über die Größe eines
Datentyps in Bytes. Toll werden sie jetzt sagen was soll da so besonderes sein. Nun wir werden den 'sizeof'-Operator später benutzen um Speicher zu reservieren. Aber jetzt zur Erklärung des 'sizeof'-Operators. Dazu erst mal wieder ein Beispielprogramm...
/*Download:sizeof.c*/
#include <stdio.h>
int main() {
printf("char =%d Byte\n",sizeof(char)); printf("int =%d Bytes\n",sizeof(int)); printf("long =%d Bytes\n",sizeof(long int)); printf("float =%d Bytes\n",sizeof(float)); printf("double =%d Bytes\n",sizeof(double));
printf("66 =%d Bytes\n",sizeof(66)); printf("Hallo =%d Bytes\n",sizeof("Hallo")); printf("A =%d Bytes\n",sizeof((char)'A')); printf("34343434 =%d Bytes\n",sizeof(34343434)); return 0; }
|
Die Ausgabe sieht, bei mir zum Beispiel, so aus...
char =1 Byte int =4 Bytes long =4 Bytes float =4 Bytes double =8 Bytes 66 =4 Bytes Hallo =6 Bytes A =1 Bytes 34343434 =4 Bytes
Das Programm macht nichts anderes als Ihnen die Größe die der Datentyp belegt in Bytes anzuzeigen. Sie sehen z.B. das 'A' 1 Byte Speicherplatz benötigt, da 'A' ja ein 'char'-Typ ist. Bei 'sizeof("Hello")' brauchen sie sich jetzt noch keine Gedanken machen wieso dieses Wort 6 Bytes an Speicher benötigt wo es doch nur 5 Zeichen hat. Hier geht lediglich um den 'sizeof' - Operator.
Jetzt fällt es nicht schwer zu verstehen wieso man mit dem 'sizeof' gut Speicherplatz reservieren kann. Man braucht nur abzufragen
wie viel Speicherplatz ein Datentyp benötigt und den Wert dann einer anderen Variable übergeben.
Des weiteren wird der sizeof - Operator zur Portierbarkeit von Programmen auf verschiedenen Systemen verwendet. Es gibt z.B. Systeme auf denen ein 'int' - Wert eine Größe von 2 Bytes hat. Und auf anderen Systemen beträgt die Größe von 'int' 4 Bytes. Beispiel....
BRAUCHE_SPEICHER_PLATZ = (Datentyp)sizeof(2);
Nehmen wir einfach mal unser Datentyp BRAUCHE_SPEICHER_PLATZ benötigt Speicherplatz der Größe eines 'int' - Wertes. In diesem Beispiel 2 Bytes. Wenn sie das Programm jetzt zum Beispiel auf ein anderes System portieren wollen auf dem ein 'int' - Wert eine Größe von 4 Bytes hat dann haben wir den Salat.
Aus diesem Grund ist es besser den Compiler zur Übersetzungszeit diese Aufgabe zu überlassen. Beispiel....
BRAUCHE_SPEICHER_PLATZ = (Datentyp)sizeof(int);
Somit sind sie auf der sicheren Seite das das Programm auf jedem System läuft und die richtige Größe von Speicherplatz reserviert.
Für Fortgeschrittene :
Der sizeof-Operator ist keine Funktion. Der sizeof-Operator
holt sich nur die Größe eines Types während der Compilier-Zeit. Folgende Schreibweise
ist daher auch erlaubt....
/*Download:sizeof2.c*/
#include <stdio.h>
int main() {
int x; size_t size = sizeof x; printf("Size : %d Bytes\n",size);
return 0; }
|
Nur weil dieser Operator mittels...
size_t size = sizeof(x);
...Klammerungen verwendet, macht in dies noch lange nicht zu einer Funktion!
Der sizeof-Operator wir übrigens gerne Verwendet um die Anzahl
der Elemente eines Arrays zu ermitteln...
/*Download:sizarray.c*/
#include <stdio.h>
int main() {
int array[]= {10,23,23,1,2,4};
printf("Gesamtgrösse in Bytes : %d Bytes\n",sizeof(array)); printf("Anzahl der Elemente : %d Zahlen\n",sizeof(array)/sizeof(int));
return 0; }
|
![ein Kapitel weiter](../weiter.gif)
© 2001,2002 Jürgen Wolf
|