#include "d:\Practice Programs\Puzzle Feuer\Puzzles\defs.h" struct S1 { char *s; int i; struct S1 *s1p; }; void main() { //static S1 a[] = { in cpp you do not have to qualifies S1 as a struct cpp's pre-compiler knows that. static struct S1 a[] = { { "abcd", 1, a+1 }, { "efgh", 2, a+2 }, { "ijkl", 3, a } }; static struct S1 *p = a; // static means the values wont be lost as as the variables come in and out of scope. int i; // static != const. PRINT3(s, a[0].s, p->s, a[2].s1p->s); for(i=0; i<2; i++) { PR(d, --a[i].i); //with i=0 --a[i].i == --(a[i].i) == --(1) == 0. a[i].i now set to 0. PR(c, ++a[i].s[3]); //with i=0 ++a[i].s[3] == ++(a[i].s[3]) == ++(d) == e. now forth string member set to e. NL; //--a[i].i and ++a[i].s[3] are manipulating the data not fetching it. }; // end for PRINT3(s, ++(p->s), a[(++p)->i].s, a[--(p->s1p->i)].s); // p->s == a[something] a[ something ].s }// end main