/* 
 * Lerneinheit C-Pointer
 * Einheit 2: Pointer Grundlagen
 * Aufgabe 2.2.2: Adresse ausgeben
 * 
 * Ergänze das Programm der ersten Aufgabe um eine Ausgabe der Speicheradressen 
 * aller drei Variablen. Nutze den Adressoperator sowie den Pointer dafür und 
 * vergleiche diese Werte miteinander. Welche Ausgabe hat der Pointer der auf 
 * keine Variable zeigt?
 */
 
#include <stdio.h>

int main(void)
{
    /*Variablen deklarieren und initialisieren*/
    int var_a=4;
    short var_b=26;
    long var_c=586;
    
    /*Pointer deklarieren*/
    int *pt_a;
    short *pt_b;
    long *pt_c;
    int *pt_d=NULL;
    
    /*Anfangsadressen dem Pointer zuweisen*/
    pt_a = &var_a;
    pt_b = &var_b;
    pt_c = &var_c;
    
    
    printf ("Ausgabe der Speicheradressen: \n");
    printf ("------------------------------\n");
    printf ("Variable 1 (direkt):         %d\n", &var_a);
    printf ("Variable 1 (ueber Pointer):  %d\n", pt_a);
    printf ("Variable 2 (direkt):         %d\n", &var_b);
    printf ("Variable 2 (ueber Pointer):  %d\n", pt_b);
    printf ("Variable 3 (direkt):         %ld\n", &var_c);
    printf ("Variable 3 (ueber Pointer):  %ld\n", pt_c);
    printf ("Nullpointer:                 %d\n", pt_d);
    
	getchar();
    return 0;
}
