C | Arrays | Pregunta 4

Salida del siguiente programa?

#include<stdio.h> 
    
int main() 
{ 
  int a[] = {1, 2, 3, 4, 5, 6}; 
  int *ptr = (int*)(&a+1); 
  printf("%d ", *(ptr-1) ); 
  return 0; 
}

(A) 1
(B) 2
(C) 6
(D) Error de tiempo de ejecución

Respuesta: (C)
Explicación: &a es la dirección de toda la array a[]. Si sumamos 1 a &a, obtenemos “dirección base de a[] + tamaño de(a)”. Y este valor se encasilla en int *. Entonces ptr apunta la memoria justo después de que se almacene 6. ptr se convierte en «int *» y se imprime el valor de *(ptr-1). Dado que ptr apunta a la memoria después de 6, ptr – 1 apunta a 6.
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 *