📜  C |高级指针|问题4

📅  最后修改于: 2021-06-28 22:29:46             🧑  作者: Mango

#include 
  
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) GarbageValue sQuiz Z CQ答案: (A)
说明:让我们首先考虑** ++ cpp。前缀增加和取消引用的优先级相同,并且两者的关联性从右到左。因此,表达式的计算结果为**(++ cpp)。因此cpp指向c + 2。因此我们得到“ TEST”作为输出。请注意取消引用运算符两次。

同样,您可以借助优先级表自己尝试其他表达式。
这个问题的测验

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。