C |高级指针|问题4

null

#include <stdio.h>
char *c[] = { "GeksQuiz" , "MCQ" , "TEST" , "QUIZ" };
char **cp[] = {c+3, c+2, c+1, c};
char ***cpp = cp;
int main()
{
printf ( "%s " , **++cpp);
printf ( "%s " , *--*++cpp+3);
printf ( "%s " , *cpp[-2]+3);
printf ( "%s " , cpp[-1][-1]+1);
return 0;
}


(A) 测试sQuiz Z CQ (B) MCQ测验Z CQ (C) 测试测验Z CQ (D) 垃圾价值 sQuiz Z CQ 答复: (A) 说明: 让我们先考虑*++CPP。 前缀递增和取消引用的优先级相同 它们的结合性都是从右向左的。因此表达式的计算结果为**(++cpp)。所以cpp指向c+2。所以我们得到“TEST”作为输出。请注意两次de reference运算符。

同样地,你也可以在老师的帮助下自己尝试其他表达方式 优先表 . 这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享