Lösung der Aufgabe 1-24 (3. Aufl.: 1-22)

/* zeiger2.c

Demonstriert die grundlegenden Aspekte von Zeigervariablen:
Die Aufgabenstellung lautet:
a) Variablen f (float) i (int) und Zeigervariablen dazu definieren
b) den Variablen f und i Werte zuordnen
c) den Zeigervariablen die Adresse der dazu passenden Variable zuordnen
d) ueber die Zeiger f und i aendern und die Aenderung ueberpruefen
e) Inhalte und Adressen aller Variablen anzeigen

*/

#include <stdio.h>

int main(void)
{
  int   i, *ptoi;  /* i ist vom Typ int,   ptoi ist Zeiger auf int   */
  float f, *ptof;  /* f ist vom Typ float, ptof ist Zeiger auf float */

  i = 4;             /* Loesung zu b */
  f = 0.01;

  ptoi = &i;         /* Loesung zu c */
  ptof = &f;

  printf("Vorher : i = %3i  f = %8.4f\n", i, f);
  printf("i und f werden jetzt ueber Zeiger geaendert!\n");

  *ptoi = 8;         /* Loesung zu d
                        ptoi zeigt auf i, *ptoi ist daher der Zugriff
                        auf i ueber den Zeiger ptoi */
  *ptof = -(*ptof);

  printf("Nachher: i = %3i  f = %8.4f\n\n", i, f);

  printf("%s%s%s%s",
    "Adressen und Inhalte aller beteiligten Variablen:\n",  /* zu e */
    "-------------------------------------------------\n",
    "Variable  Adresse  Inhalt\n",
    "-------------------------------------------------\n");
  printf("  i    %8u  %8i\n"  ,&i, i);
  printf("  f    %8u  %8.3f\n",&f, f);
  printf(" ptoi  %8u  %8u\n"  ,&ptoi, ptoi);
  printf(" ptof  %8u  %8u\n"  ,&ptof, ptof);

  return 0;
}