慕森王
分析:一:struct ks{int a;int *b;}s[4], *p;定义了两个结构体变量, 分别是数组s和指针p.二:main函数中的for语句是给数组变量s赋值. 数组s的每个元素的成员指针变量b都指向了它本身的成员变量a.赋值完后, s[0].a = 1, s[1].a = 3, s[2].a = 5, s[3].a = 7 .且, s[0].b = &s[0].a, s[1].b = &s[1].a, s[2].b = &s[2].a, s[3].b = &s[3].a 三:p = &s[0];//结构体指针变量p指向了结构体数组变量s的第一个元素.p++;//p指向了结构体数组变量s的第二个元素, 即s[1]的首地址.四:++p是先做++运算再取p的值, 而p++是先取p的得, 再做++运算.故对于最后的打印语句:printf ("%d,%d\n", (++p) -> a, (p++) -> a);由上述的分析, 这时(++p)指向了s[2]的首地址. 所以(++p) -> a 的值是s[2].a的值, 即为5而(p++)是指向了s[1]的首地址. 所以(p++) -> a的值是s[1].a的值, 即为3.故最后的结果是: 5,3