recategorized by
16,917 views
48 48 votes

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 invoking $printxy(1,1)$ is:

  1. $0, 0$
  2. $0, 1$
  3. $1, 0$
  4. $1, 1$

12 Answers

Best answer
54 54 votes

At first in loop we are giving $x=0$ then $ptr$ is pointing to $X$.

So, $*ptr=0$

Now, we copying the value of $ptr$ to $y$ ,so $Y=0$

 x=0;      //value of x = 0  
    ptr= &x;      // ptr points to variable x
    y= *ptr;      // Y contain value pointed by ptr i.e. x= 0;


Now, value of $ptr$ is changed to $1$. so the location of $X$ itself got modified

 *ptr=1;  

As it is pointing to $x$ so $x$ will also be changed to $1$

So, $1,0$ will be the value

C is correct answer here.

edited by
11 11 votes
we got x= 1 and y= 1;
void printxy(int x, int y) 
{  
    int *ptr;     //pointer is created which contain integer value.
    x=0;          //value of x = 0 here. 
    ptr= &x;      // ptr point to variable which has 0 
    y= *ptr;      // y contain value pointed by ptr i.e. x= 0;
    *ptr=1;       // value pointer by ptr is now set to 1 i.e. x= 1;
    printf("%d,%d",x,y);  // print x,y = x= 1 y=0

}

C is answer

4 4 votes

Here's the code with a full explanation.

void printxy(int x, int y) {
    int *ptr; 
    x=0;     /*The value of x is now 0.*/
    
    ptr=&x;  /*Assigning the address of x to ptr.
             It means ptr points to the address of x.
             So *ptr=0 as x = 0.
             */
            
    y=*ptr;  /*Assigning the value that the ptr holds, to y
              y=0 as *ptr=0.
             */
             
    *ptr=1;  /*Assigning 1 to the value that the ptr holds.
             It means x=*ptr=1 as ptr points to the address of x.
             So the value of x is now 1.
             */
             
             /*Therefore, x=1 and y=0 now */
             
    printf(“%d, %d”, x, y);  /*It will give the output as 1, 0 */
}

 

Note that the function will print the same value no matter what the parameters are passed into it.

So the correct answer is C.

Answer:
Position:
Show:

Related questions

123 123 votes
17 answers 17 answers
48.3k
48.3k views
Madhav asked Feb 14, 2017
48,280 views
Consider the following C program.#include<stdio.h #include<string.h int main() { char* c="GATECSIT2017"; char* p=c; printf("%d", (int)strlen(c+2[p]-6[p]-1)); return 0; }T...
106 106 votes
10 answers 10 answers
29.3k
29.3k views
Arjun asked Feb 14, 2017
29,273 views
Consider the following snippet of a C program. Assume that swap $(\&x, \&y)$ exchanges the content of $x$ and $y$:int main () { int array[] = {3, 5, 1, 4, 6, 2}; int done...
47 47 votes
8 answers 8 answers
20.6k
20.6k views
Madhav asked Feb 14, 2017
20,624 views
Consider the following C program.#include<stdio.h int main () { int m=10; int n, n1; n=++m; n1=m++; n ; n1; n-=n1; printf(“%d”, n); return 0; }The output of the program ...