Informatik - Übungen zu C - Adressen
Das folgende Programm ermittelt die Adressen einiger Variablen und gibt die Adressen am Bildschirm aus. Die Adresswerte sind abhängig vom verwendeten System.
/* zeiger1.c Demo zu Adresse
Der Adressoperator & liefert die Adresse einer Variablen
Fuer die Ausgabe von Adressen gibt es die Umwandlung %p,
die Adresswerte werden dann als HEX-Zahlen dargestellt.
Die Adresswerte koennen aber auch mit der Umwandlung %u
(fuer ganze positive Zahlen) ausgegeben werden.
Der GNU-Compiler reagiert (zurecht) auf %u mit einer Warnung
*/
#include <stdio.h>
void main (void)
{
int a, b, c;
float x, y, z;
double v[20];
int i;
printf("Adressen der Variablen im Speicher\n");
printf("------------------------------------------------\n");
printf("&a = %u (%p)\n", &a, &a);
printf("&b = %u (%p)\n", &b, &b);
printf("&c = %u (%p)\n", &c, &c);
printf("&x = %u (%p)\n", &x, &x);
printf("&y = %u (%p)\n", &y, &y);
printf("&z = %u (%p)\n", &z, &z);
printf("&i = %u\n", &i);
printf("%s%s%s",
"\nDie Elemente eines Vektors sind hintereinander\n",
"in aufsteigender Reihenfolge angeordnet\n",
"------------------------------------------------\n");
for (i = 0; i < 5; i++) {
v[i] = 0.1*i; /* den einelnen Elementen einen Wert zuordnen */
printf("Index %1d Adresse: %u Inhalt: %6.2f\n", i, &v[i], v[i]);
}
printf(
"------------------------------------------------\n");
printf("v hat als Wert die Anfangsadresse des Vektors\n");
printf("v = &v[0] = %u\n\n", v);
printf("%s%s",
"Auch main hat eine Adresse:\n",
"------------------------------------------------\n");
printf("&main = %u\n", &main);
printf(" main = %u\n", main);
getchar();
}
Eine Ausführung des Programmes ergibt z.B.:
Adressen der Variablen im Speicher ------------------------------------------------ &a = 1245100 (0012FFAC) &b = 1245096 (0012FFA8) &c = 1245092 (0012FFA4) &x = 1244928 (0012FF00) &y = 1244920 (0012FEF8) &z = 1244916 (0012FEF4) &i = 1244924 Die Elemente eines Vektors sind hintereinander in aufsteigender Reihenfolge angeordnet ------------------------------------------------ Index 0 Adresse: 1244932 Inhalt: 0.0 Index 1 Adresse: 1244940 Inhalt: 0.1 Index 2 Adresse: 1244948 Inhalt: 0.2 Index 3 Adresse: 1244956 Inhalt: 0.3 Index 4 Adresse: 1244964 Inhalt: 0.4 ------------------------------------------------ v hat als Wert die Anfangsadresse des Vektors v = &v[0] = 1244932 Auch main hat eine Adresse: ------------------------------------------------ &main = 4198400 main = 4198400
Schreibe eine Programm, das die Arbeit mit Zeigern und Adressen demonstriert: