C | Conceptos básicos del puntero | Pregunta 6

#include<stdio.h>
int main()
{
    int arr[] = {10, 20, 30, 40, 50, 60};
    int *ptr1 = arr;
    int *ptr2 = arr + 5;
    printf("Number of elements between two pointer are: %d.", 
                                (ptr2 - ptr1));
    printf("Number of bytes between two pointers are: %d",  
                              (char*)ptr2 - (char*) ptr1);
    return 0;
}

Suponga que una variable int toma 4 bytes y una variable char toma 1 byte
(A) El número de elementos entre dos punteros es: 5.
El número de bytes entre dos punteros es: 20
(B) El número de elementos entre dos punteros es: 20.
El número de bytes entre dos punteros es: 20
(C) El número de elementos entre dos punteros es: 5.
El número de bytes entre dos punteros es: 5
(D) Error del compilador
(E) Error de tiempo de ejecución

Respuesta: (A)
Explicación:El nombre de la array proporciona la dirección del primer elemento de la array. Entonces, cuando hacemos ‘*ptr1 = arr;’, ptr1 comienza a contener la dirección del elemento 10. ‘arr + 5’ da la dirección del sexto elemento, ya que la aritmética se realiza con punteros. Así que ‘ptr2-ptr1’ da 5. Cuando hacemos ‘(char *)ptr2’, ptr2 se convierte en puntero char y el tamaño del carácter es de un byte, la aritmética de punteros ocurre teniendo en cuenta los punteros de caracteres. Entonces obtenemos 5*sizeof(int)/sizeof(char) como una diferencia de dos punteros.

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 *