Discussion:
Pointer stew
(zu alt für eine Antwort)
Thomas Koenig
2016-10-25 18:25:00 UTC
Permalink
Raw Message
Aus einem alten C-Rätselbuch (ein bisschen modifiziert).
Was gibt das Programm aus?

#include <stdio.h>

char *c[] = {
"ENTER",
"NEW",
"POINT",
"FIRST"
}
;

char **cp[] = { c+3, c+2, c+1, c};
char ***cpp = cp;

int main()
{
printf("%s", **++cpp);
printf("%s ", *--*++cpp+3 );
printf("%s", *cpp[-2]+3 );
printf("%s\n", cpp[-1][-1]+1 );
return 0;
}
Helmut Schellong
2016-10-25 19:53:21 UTC
Permalink
Raw Message
Post by Thomas Koenig
Aus einem alten C-Rätselbuch (ein bisschen modifiziert).
Was gibt das Programm aus?
#include <stdio.h>
char *c[] = {
"ENTER",
"NEW",
"POINT",
"FIRST"
}
;
char **cp[] = { c+3, c+2, c+1, c};
char ***cpp = cp;
int main()
{
printf("%s", **++cpp);
printf("%s ", *--*++cpp+3 );
printf("%s", *cpp[-2]+3 );
printf("%s\n", cpp[-1][-1]+1 );
return 0;
}
POINTER STEW

**++cpp steht und zielt nun auf POINT.

*++cpp --> c+1, -- --> (c+1-->c), * --> ENTER, +3 --> ER
dauerhaft
%s' ' --> Space

cpp[-2] --> c+3, * --> FIRST, +3 --> ST

cpp[-1] --> c+2, [-1] --> NEW, +1 --> EW
--
Mit freundlichen Grüßen
Helmut Schellong ***@schellong.biz
www.schellong.de www.schellong.com www.schellong.biz
http://www.schellong.de/c.htm
Loading...