ein Kapitel zurück                                           ein Kapitel weiter

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 zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf