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.