#include <stdio.h>
#include <stdlib.h>
int alt(char *p)
{ /* gibt 1. Zeichen eines Strings aus und inkrementiert */
    putchar(*p);
    p++; /* diese Änderung am Zeiger schlägt wegen call by value NICHT bis zum aufrufenden Kontext durch */
    /* deswegen übergibt man einen Zeiger auf das betreffende Element und wenn das schon selbst ein Zeiger ist, dann wird es eben ein "Doppel"-Zeiger */
    return 1;
}
int neu(char **p)
{ /* gibt 1. Zeichen eines Stringzeigers aus und inkrementiert */
    putchar(*(*p)); /* p durch (*p) ersetzen */
    (*p)++;
    return 1;
}
void f(char *s)
{
    alt(s);
    alt(s);
    alt(s);
    puts("\n========");
    neu(&s); /* "Doppel"-Zeiger */
    neu(&s); /* "Doppel"-Zeiger */
    neu(&s); /* "Doppel"-Zeiger */
}
int main()
{
    f("Hallo");
    return 0;
}