The Gateway to Computer Science Excellence
First time here? Checkout the FAQ!
x
+14 votes
3.1k views

Consider the following function

void swap(int a, int b)  
{       
    int temp;
    temp = a;
    a = b;
    b = temp;  
}  

In order to exchange the values of two variables $x$ and $y$.

  1. call $swap(x, y)$

  2. call $swap(\&x, \&y)$

  3. $swap (x, y)$ cannot be used as it does not return any value

  4. $swap (x, y)$ cannot be used as the parameters are passed by value

asked in Compiler Design by Veteran (59.5k points)
edited by | 3.1k views
+1

5 Answers

+22 votes
Best answer

ans (D).

Option A will not exchange the values of $x$ and $y$ because parameters are passed by value in C. i.e., the code is exchanging $x'$ and $y'$ which are having the values of $x$ and $y$ respectively. 

Option B will not swap the value

 void swap(int a, int b) 

Here, it is wrong to pass in address (int*) as the parameters are of int type, even sizeof int and int* varies depending on the compiler. Now, even if ignoring this error, the given code would not exchange the values of $x$ and $y$ as it is merely exchanging $p_1'$ and $p_2'$ where $p_1'$ and $p_2'$ are containing the copies of the addresses of $x$ and $y$ respectively. (Even addresses are passed by value in C language).

Option C is false, return value is not required for exchanging the variables.

Option D is correct. We cannot use $swap(x,y)$ because parameters are passed by value. Only way now to exchange the variables are by passing their addresses and then modifying the contents using the de-referencing operator $(*).$

answered by Boss (15.1k points)
edited by
+3

This Might Give Clear Understanding

+8 votes
I think, option D will be answer.

Because in the given function, parameters are used as passed by value.So there will be no change in actual parameters which is defined under the main function..
answered by Boss (24.9k points)
0
Yes option D should be correct.
0 votes

Pass by value: In this approach, we pass the copy of actual variables in function as a parameter. Hence any modification on parameters inside the function will not reflect in the actual variable.

Therefore to exchange the values of x and y, we cannot use pass by value( given code is for pass by value). So option D is correct

answered by Loyal (9.2k points)
–1 vote
ans d)
answered by Active (5.2k points)
–2 votes

Ans: D swap (x, y) cannot be used as the parameters are passed by value

answered by Loyal (7.2k points)


Quick search syntax
tags tag:apple
author user:martin
title title:apple
content content:apple
exclude -tag:apple
force match +apple
views views:100
score score:10
answers answers:2
is accepted isaccepted:true
is closed isclosed:true

38,112 questions
45,619 answers
132,315 comments
49,297 users