GATE | GATE-CS-2017 (Set 2) | Question 35

Consider the following function implemented in C:

void printxy(int x, int y)
{
    int *ptr;
    x = 0;
    ptr = &x;
    y = *ptr;
    *ptr = 1;
    printf("%d,%d", x, y);
}

The output of the printxy(1,1) is
(A) 0,0
(B) 0,1
(C) 1,0
(D) 1,1


Answer: (C)

Explanation:

#include
void main()
{
 int x = 1, y = 1;
 printxy(x,y);
}
void printxy(int x, int y) 
{  
    int *ptr;     
    x = 0;     
    
    // ptr point to variable of value 0 
    ptr = &x;      
    
    // y has value pointed by ptr -> x= 0;
    y = *ptr;   
    
    // value pointed by ptr is set to 1 -> x= 1;
    *ptr = 1;       
    
    //x be changed to 1 and y will remain 0
    printf("%d,%d", x, y);  
}


Quiz of this Question



My Personal Notes arrow_drop_up