#include <stdio.h>
#include <stdlib.h>
int alt(char *p)
{ /* gibt 1. Zeichen eines Strings aus und inkrementiert */
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);
neu(&s); /* "Doppel"-Zeiger */
neu(&s); /* "Doppel"-Zeiger */
neu(&s); /* "Doppel"-Zeiger */
}
int main()
{
f("Hallo");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KaW50IGFsdChjaGFyICpwKQp7IC8qIGdpYnQgMS4gWmVpY2hlbiBlaW5lcyBTdHJpbmdzIGF1cyB1bmQgaW5rcmVtZW50aWVydCAqLwogICAgcHV0Y2hhcigqcCk7CiAgICBwKys7IC8qIGRpZXNlIMOEbmRlcnVuZyBhbSBaZWlnZXIgc2NobMOkZ3Qgd2VnZW4gY2FsbCBieSB2YWx1ZSBOSUNIVCBiaXMgenVtIGF1ZnJ1ZmVuZGVuIEtvbnRleHQgZHVyY2ggKi8KICAgIC8qIGRlc3dlZ2VuIMO8YmVyZ2lidCBtYW4gZWluZW4gWmVpZ2VyIGF1ZiBkYXMgYmV0cmVmZmVuZGUgRWxlbWVudCB1bmQgd2VubiBkYXMgc2Nob24gc2VsYnN0IGVpbiBaZWlnZXIgaXN0LCBkYW5uIHdpcmQgZXMgZWJlbiBlaW4gIkRvcHBlbCItWmVpZ2VyICovCiAgICByZXR1cm4gMTsKfQppbnQgbmV1KGNoYXIgKipwKQp7IC8qIGdpYnQgMS4gWmVpY2hlbiBlaW5lcyBTdHJpbmd6ZWlnZXJzIGF1cyB1bmQgaW5rcmVtZW50aWVydCAqLwogICAgcHV0Y2hhcigqKCpwKSk7IC8qIHAgZHVyY2ggKCpwKSBlcnNldHplbiAqLwogICAgKCpwKSsrOwogICAgcmV0dXJuIDE7Cn0Kdm9pZCBmKGNoYXIgKnMpCnsKICAgIGFsdChzKTsKICAgIGFsdChzKTsKICAgIGFsdChzKTsKICAgIHB1dHMoIlxuPT09PT09PT0iKTsKICAgIG5ldSgmcyk7IC8qICJEb3BwZWwiLVplaWdlciAqLwogICAgbmV1KCZzKTsgLyogIkRvcHBlbCItWmVpZ2VyICovCiAgICBuZXUoJnMpOyAvKiAiRG9wcGVsIi1aZWlnZXIgKi8KfQppbnQgbWFpbigpCnsKICAgIGYoIkhhbGxvIik7CiAgICByZXR1cm4gMDsKfQ==