Pointer stew

25/10/2016 - 20:25 von Thomas Koenig | Report spam
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", cpp[-1][-1]+1 );
return 0;
}
 

Lesen sie die antworten

#1 Helmut Schellong
25/10/2016 - 21:53 | Warnen spam
On 10/25/2016 20:25, Thomas Koenig wrote:
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", 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
www.schellong.de www.schellong.com www.schellong.biz
http://www.schellong.de/c.htm

Ähnliche fragen