

答案应该为D ,说明如下:
//创建一个二维字符数组,数组是2*3的字符数组。
//将字符指针p指向二维数组开头
char s[2][3] = {"ab","cd"},*p=(char *)s;
//下面这个我有点不太确定是否正确
// s为一个单位为3个字符的字符指针 ,
//*(s+3)为二维数组开始位置后第3个长度为3个字符的字符指针,这个是指针,不是字符。
printf("%c\n",*(s+3));
//s[1][1] 指向二维数组开头后第(0+2*2)个字符的位置,字符串自带一个'\0'字符,即 'd'
printf("%c\n",s[1][1]);
// p为单位为一个字符的字符指针,p[1][1]语法错误。
// printf("%c",p[1][1]);
// p为单位为一个字符的字符指针, *(p+3)指向二维数组开头后第3(0+3)个字符 ,字符串自带一个'\0'字符,即'c'
printf("%c\n",*(p+3));
// p为单位为一个字符的字符指针,因为++运算符优先级高于*,所以先将p指针往后一个字符位置,即'b'
//然后因为*运算符 优先级高于+,所以第二步执行取p当前的值操作,即获得值b,然后字符'b'+2,即等于'd'
printf("%c\n",*++p+2);