# C | Pointer Basics | Question 17

Assume that float takes 4 bytes, predict the output of following program.

 `#include ` ` `  `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

Explanation: When we add a value x to a pointer p, the value of the resultant expression is p + x*sizeof(*p) where sizeof(*p) means size of data type pointed by p. That is why ptr2 is incremented to point to arr[3] in the above code. Same rule applies for subtraction. Note that only integral values can be added or subtracted from a pointer. We can also subtract or compare two pointers of same type.

Quiz of this Question

My Personal Notes arrow_drop_up
Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.