code:
#include <stdio.h>
char *c[] = {"GeksQuiz","MCQ","TEST","QUIZ"};
char **cp[] = {c+3,c+2,c+1,c};
char ***cpp = cp;
int main(int argc, char const *argv[]) {
printf("%s ",**++cpp); // *(*(++cpp))
printf("%s ",*--*++cpp + 3); // *(--(*(++cpp))) + 3
printf("%s ",*cpp[-2] + 3); // *(*(cpp - 2)) + 3
printf("%s ",cpp[-1][-1] + 1); // *(*(cpp - 1) - 1) + 1
return 0;
}
Before main(): assumed pointer size 4 bytes and char size 1 byte
Now,
The following precedence rules will be used.
And ptr = ptr + x,
will set ptr
to ptr + x*sizeof(*ptr).
First printf:
Second printf
:
Third printf
:
Fourth printf
:
Similar QS