作业帮 > 综合 > 作业

若定义 char s[2][3]={"ab","cd"},*p=(char *)s; 那么下列表达式语法正确,

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/01 08:15:34
若定义 char s[2][3]={"ab","cd"},*p=(char *)s; 那么下列表达式语法正确,
若定义
\x09\x09\x09\x09\x09\x09
char s[2][3]={“ab”,“cd”},*p=(char *)s;
那么下列表达式语法正确,并且其值与 s[1][1]相等的表达式(并非一定与其等价)是(
\x09\x09\x09\x09\x09\x09
).
(3分)
\x09\x09\x09\x09\x09\x09
A、*(s+3)
B、*++p+2
C、*s+2
D、p[1][1]
\x09\x09\x09\x09\x09\x09
\x09\x09\x09\x09\x09\x09
B
\x09\x09\x09\x09\x09
\x09\x09\x09\x09
\x09\x09\x09
\x09\x09
s[1][1] = 'd',这个应该没问题吧?第二个字符串的第二个字符.
*++p+2 这个比较有趣,p是一个char*指针,指向字符数组首地址,&s[0][0].
首先++的优先级更高执行++p得到的是&s[0][1],然后*运算符解引用,得到s[0][1]
s[0][1]的字符是'b',然后'b'+2,得到的就是'd'的ASCII码.
再问: 为什么p是一个char*指针,指向字符数组首地址,&s[0][0],*++p+2不应该是说明平指向&s[1][2]吗?
再答: 基础不过关,解释了也没用,回去看书。