Pointer
Abschlussbedingungen
Pointer sind Integer, deren Wert dem einer Speicheradresse entspricht. Ein Pointer "zeigt" damit auf eine andere Variable. Der Typ des Pointer legt dabei den Typ der Zielvariablen fest.
#include <stdio.h>
int main()
{
int a = 5;
int b = 12;
int *p = &a;
printf("%p - %p // %p\n", p, &a, &b);
printf("%d - %d\n", *p, a);
*p = 7;
printf("%d\n", a);
printf("%p\n", &p);
return 0;
}
Um über einen Pointer auf den Wert der Variable hinter dem Pointer zuzugreifen muss dieser "dereferenziert" werden. Die geschieht mit dem *-Operator.Pointer ermöglichen es, Variablen an Funktionen weiterzugeben, ohne die Variable selbst zu kopieren. Stattdessen wird der Pointer kopiert.
#include <stdio.h>
int foo(int x)
{
x = x * 2;
return x;
}
int bar(int *x)
{
*x = *x * 2;
return *x;
}
/*
int baz(int *x)
{
x = x * 2;
return x;
}
*/
int main()
{
int a = 5;
int b = 5;
int c = 0;
int d = 0;
printf("a=%2d | b=%2d | c=%2d | d=%2d\n", a, b, c, d);
c = foo(a);
d = bar(&b);
//e = baz(&b);
printf("a=%2d | b=%2d | c=%2d | d=%2d\n", a, b, c, d);
return 0;
}
Zuletzt geändert: Freitag, 18. Mai 2018, 17:09