#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