Open In App
Related Articles

C | Pointer Basics | Question 17

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report
Assume that float takes 4 bytes, predict the output of following program.
#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

Answer: (A)

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

Last Updated : 28 Jun, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads