Skip to content
Related Articles

Related Articles

C | Advanced Pointer | Question 4
  • Difficulty Level : Easy
  • Last Updated : 29 Aug, 2013
GeeksforGeeks - Summer Carnival Banner




#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) TEST sQuiz Z CQ
(B) MCQ Quiz Z CQ
(C) TEST Quiz Z CQ
(D) GarbageValue sQuiz Z CQ


Answer: (A)

Explanation: Let us first consider **++cpp. Precedence of prefix increment and de-reference is same and associativity of both of them is right to left. So the expression is evaluated as **(++cpp). So cpp points to c+2. So we get “TEST” as output. Note the de-reference operator twice.

Similarly, you may try other expressions yourself with the help of precedence table.

Quiz of this Question

Want to learn from the best curated videos and practice problems, check out the C Foundation Course for Basic to Advanced C.
My Personal Notes arrow_drop_up
Recommended Articles
Page :