Рубрики

C | Расширенный Указатель | Вопрос 4

#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) GarbageValue sQuiz Z CQ

Ответ: (А)
Пояснение: Давайте сначала рассмотрим ** ++ cpp. Приоритет приращения префикса и разыменования одинаков, и ассоциативность обоих из них справа налево. Таким образом, выражение оценивается как ** (++ cpp). Таким образом, cpp указывает на c + 2. Таким образом, мы получаем «ТЕСТ» в качестве вывода. Обратите внимание на оператор отмены ссылок дважды.

Точно так же вы можете попробовать другие выражения самостоятельно с помощью таблицы приоритетов .
Тест на этот вопрос

Рекомендуемые посты:

C | Расширенный Указатель | Вопрос 4

0.00 (0%) 0 votes