C | Puntero avanzado | Pregunta 7

Suponga que el tamaño de int es 4. #include <stdio.h> void f(char**); int main() {     char *argv[] = { «ab», «cd», «ef», «gh», «ij», «kl» };     f(argv);     return 0; } void f(char **p) {     char *t;     t = (p += sizeof(int))[-1];     printf(«%s\n», t); } (A) ab (B) cd (C) ef (D) gh Respuesta: (D) Explicación: … Continue reading «C | Puntero avanzado | Pregunta 7»

C | Puntero avanzado | Pregunta 3

#include <stdio.h> int main() {     int a[5] = {1,2,3,4,5};     int *ptr = (int*)(&a+1);     printf(«%d %d», *(a+1), *(ptr-1));     return 0; } (A) 2 5 (B) Valor basura (C) Error del compilador (D) Fallo de segmentación Respuesta: (A) Explicación: El programa imprime “2 5″. Dado que los compiladores convierten las operaciones de array en punteros antes de … Continue reading «C | Puntero avanzado | Pregunta 3»

C | Puntero avanzado | Pregunta 8

#include <stdio.h> int main() {     int a[][3] = {1, 2, 3, 4, 5, 6};     int (*ptr)[3] = a;     printf(«%d %d «, (*ptr)[1], (*ptr)[2]);     ++ptr;     printf(«%d %d\n», (*ptr)[1], (*ptr)[2]);     return 0; }    (A) 2 3 5 6 (B) 2 3 4 5 (C) 4 5 0 0 (D) ninguna de las anteriores Respuesta: (A) Explicación: … Continue reading «C | Puntero avanzado | Pregunta 8»