Open In App

C | Pointer Basics | Question 3

Like Article
Like
Save Article
Save
Share
Report issue
Report

Output of following program?




#include <stdio.h>
  
int main()
{
    int *ptr;
    int x;
  
    ptr = &x;
    *ptr = 0;
  
    printf(" x = %d\n", x);
    printf(" *ptr = %d\n", *ptr);
  
    *ptr += 5;
    printf(" x  = %d\n", x);
    printf(" *ptr = %d\n", *ptr);
  
    (*ptr)++;
    printf(" x = %d\n", x);
    printf(" *ptr = %d\n", *ptr);
  
    return 0;
}


(A) x = 0
*ptr = 0
x = 5
*ptr = 5
x = 6
*ptr = 6
(B) x = garbage value
*ptr = 0
x = garbage value
*ptr = 5
x = garbage value
*ptr = 6
(C) x = 0
*ptr = 0
x = 5
*ptr = 5
x = garbage value
*ptr = garbage value
(D) x = 0
*ptr = 0
x = 0
*ptr = 0
x = 0
*ptr = 0


Answer: (A)

Explanation: See the comments below for explanation.

  int *ptr;  /* Note: the use of * here is not for dereferencing, 
               it is for data type int */
  int x;

  ptr = &x;   /* ptr now points to x (or ptr is equal to address of x) */
  *ptr = 0;   /* set value ate ptr to 0 or set x to zero */

  printf(" x = %d\n", x);   /* prints x =  0 */
  printf(" *ptr = %d\n", *ptr);  /* prints *ptr =  0 */


  *ptr += 5;        /* increment the value at ptr by 5 */
  printf(" x  = %d\n", x);  /* prints x = 5 */
  printf(" *ptr = %d\n", *ptr); /* prints *ptr =  5 */


  (*ptr)++;         /* increment the value at ptr by 1 */
  printf(" x  = %d\n", x);  /* prints x = 6 */
  printf(" *ptr = %d\n", *ptr);  /* prints *ptr =  6 */

Last Updated : 04 Feb, 2013
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads