Suponga que float toma 4 bytes, prediga la salida del siguiente programa.
#include <stdio.h> int main() { float arr[5] = {12.5, 10.0, 13.5, 90.5, 0.5}; float *ptr1 = &arr[0]; float *ptr2 = ptr1 + 3; printf("%f ", *ptr2); printf("%d", ptr2 - ptr1); return 0; }
(A) 90.500000
3
(B) 90.500000
12
(C) 10.000000
12
(D) 0.500000
3
Respuesta: (A)
Explicación: Cuando agregamos un valor x a un puntero p, el valor de la expresión resultante es p + x*sizeof(*p) donde sizeof(*p) significa el tamaño del tipo de datos apuntado por p. Es por eso que ptr2 se incrementa para apuntar a arr[3] en el código anterior. La misma regla se aplica para la resta. Tenga en cuenta que solo se pueden sumar o restar valores enteros de un puntero. También podemos restar o comparar dos punteros del mismo tipo.
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