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