Wie Kelec schon gesagt hat werden Pointer vorallem dann verwendet, wenn man um Pass by Reference zu realisieren. Hier mal ein praktische Beispiel für die Benutzung von Pointern, wenn du den Wert von zwei Variablen tauschen möchtest
#include <stdio.h>
void swap(int *a, int *b)
{
*a = *a ^ *b;
*b = *a ^ *b;
*a = *a ^ *b;
}
int main()
{
int num1 = 69;
int num2 = 420;
/* num1 = 69, num2 = 420 */
printf("Bevor dem Tausch: num1 = %d, num2 = %d\n", num1, num2);
/* Hier werden die Speicheradressen der Variablen übergeben */
swap(&num1, &num2) // pass by reference
/* num1 = 420, num2 = 69 */
printf("Nach dem Tausch: num1 = %d, num2 = %d\n", num1, num2);
Da hier die Speicheradressen übergeben werden, werden die Variablen geändert, da direkt auf den Speicher zugegriffen wird und nicht der Wert der Variablen kopiert wird, wie bei einer Funktion die keine Pointer benutzt.
#include <stdio.h>
void swap(int a, int b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
int main()
{
int num1 = 69;
int num2 = 420;
/* num1 = 69, num2 = 420 */
printf("Bevor dem Tausch: num1 = %d, num2 = %d\n", num1, num2);
/* Hier werden nur die Werte der Variablen übergeben */
swap(num1, num2) // pass by value
/* num1 = 69, num2 = 420 */
printf("Nach dem Tausch: num1 = %d, num2 = %d\n", num1, num2);
Hier würde nichts passieren, da der Wert von num1 und num2 nur kopiert wird, von daher ändern sich auch die Variablen nicht, sonder nur die kopierten Werte innerhalb der funktion