单选题 阅读以下程序段,其中表达式((p++)+1)->m的值是______。

struct S
{
int m; int*q;
};
int a[6]={1, 2, 3, 4, 5, 6};
struct S n[3]={2, &a[1], 4, &a[2], 6, "/0"}, *p;
p=n;
((p++)+1)->m;
【正确答案】 B
【答案解析】[解析] 结构数组初始化后,其各个元素的值如图1所示。

图1 初始化后的n数组

可以看出n[0].m=2,n[1].m=4,n[2].m=6,当赋值表达式p=n被执行后,类型为S的结构指针p指向类型为S的结构数组n的第一个元素,即指向n[0]。表达式((p++)+1)->m包含三个操作:其一,利用p指针的当前值,通过(p++)+1运算产生一个新指针,该指针指向n[1](参见图2);其二,通过新指针间接访问n[1]的成员m,该成员的值是4;其三,对p指针执行后增量,使其也指向结构数组n的第2个元素,即指向n[1]。