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

Respuesta: (A)
Explicación: Consideremos primero **++cpp. La precedencia del incremento del prefijo y la desreferenciación es la misma y la asociatividad de ambos es de derecha a izquierda. Entonces la expresión se evalúa como **(++cpp). Entonces cpp apunta a c+2. Entonces obtenemos «PRUEBA» como salida. Tenga en cuenta el operador de desreferencia dos veces.

Del mismo modo, puede probar otras expresiones usted mismo con la ayuda de la tabla de precedencia .
Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *