Pointer
Completion requirements
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;
}
Last modified: Friday, 18 May 2018, 5:09 PM