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: