next up previous contents
Nächste Seite: Zeiger als Funktionsresultate Aufwärts: Pointer Vorherige Seite: Dynamischer Speicher mit malloc   Inhalt

Zeiger als Funktionsparameter

Zeiger können, wie alle anderen Typen auch, Parameter von Funktionen sein, und innerhalb der Funktionen dereferenziert werden. Die Funktionen haben dann die Möglichkeit, auf Daten zuzugreifen, auf die sie ohne diesen Mechanismus keinen Zugriff hätten. So funktioniert dies z.B. nicht wie erwartet:


void austausch(int i, int j)
{
  int temp;
  temp = i;
  i = j;
  j = temp;
}

void test(void)
{
  int a = 4;
  int b = 5;

  austausch (a,b);
  printf("%d %d\n",a,b);
}

würde trotz Austausch 4 5 ausgeben.

Hingegen würde


void austausch(int *i, int *j)
{
  int temp;
  temp = *i;
  *i = *j;
  *j = temp;
}

void test(void)
{
  int a = 4;
  int b = 5;

  austausch (&a,&b);
  printf("%d %d\n",a,b);
}

5 4 ausgeben.



Thomas Neuhaus
2001-01-14