|
 |
Beispielprogramm: Zeiger auf einen Zeiger, der auf double zeigt.
Im Skript findet sich eine Tabelle, in der die Speicherbelegung eines Zeigers auf einen Zeiger gezeigt ist, der seinerseits auf eine Variable vom Typ double zeigt. Der Inhalt der Tabelle wurde mit dem folgenden Programm erstellt:
/*
Dateiname: ZeigerAufZeiger.c
Autor: Robert Heß
Version: 1.0
Datum: 14.10.2008
Beschreibung: Gibt die Speicherbelegung von einem Zeiger auf einen Zeiger aus.
*/
#include <stdio.h>
int main()
{
double e=2.71828; /* die Konstante e */
double *pe=&e; /* Zeiger auf die Konstante e */
double **ppe=&pe; /* Zeiger auf den Zeiger auf double */
int i; /* lokale Indexvariable */
/* Ausgabe der Variablen */
printf("Wert der Variable ppe: %p\n", ppe);
printf("Wert der Variable pe: %p\n", *ppe);
printf("Wert der Variable e: %lf\n", **ppe);
printf("\n");
/* Speicherbelegung der Variable e */
printf("Speicherbelegung von >double e=2.71828;<\n");
for(i=0; i<sizeof(e); i++) {
printf("%p", (char*)&e+i);
printf(" %02x\n", *((unsigned char*)&e+i));
}
printf("\n");
/* Speicherbelegung der Variable pe */
printf("Speicherbelegung von >double *pe=&e;<\n");
for(i=0; i<sizeof(pe); i++) {
printf("%p", (char*)&pe+i);
printf(" %02x\n", *((unsigned char*)&pe+i));
}
printf("\n");
/* Speicherbelegung der Variable ppe */
printf("Speicherbelegung von >double **ppe=&pe;<\n");
for(i=0; i<sizeof(ppe); i++) {
printf("%p", (char*)&ppe+i);
printf(" %02x\n", *((unsigned char*)&ppe+i));
}
return 0;
}
Das Programm erzeugt folgende Ausgabe:
Wert der Variable ppe: 0012FF74
Wert der Variable pe: 0012FF78
Wert der Variable e: 2.718280
Speicherbelegung von >double e=2.71828;<
0012FF78 90
0012FF79 f7
0012FF7A aa
0012FF7B 95
0012FF7C 09
0012FF7D bf
0012FF7E 05
0012FF7F 40
Speicherbelegung von >double *pe=&e;<
0012FF74 78
0012FF75 ff
0012FF76 12
0012FF77 00
Speicherbelegung von >double **ppe=&pe;<
0012FF70 74
0012FF71 ff
0012FF72 12
0012FF73 00
Press any key to continue
Seite 16
|
 |
 |