# C | Pointer Basics | Question 17

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

 `#include ` ` `  `int` `main() ` `{ ` `    ``float` `arr = {12.5, 10.0, 13.5, 90.5, 0.5}; ` `    ``float` `*ptr1 = &arr; ` `    ``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 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.