The Gateway to Computer Science Excellence
First time here? Checkout the FAQ!
x
+2 votes
743 views

What will be the output of the following program assuming that parameter passing is

  1. call by value

  2. call by reference

  3. call by copy restore

procedure P{x, y, z}; 
begin 
y:y+1; 
z: x+x 
end; 
begin 
a:= b:= 3; 
P(a+b, a, a); 
Print(a) 
end.   

 

asked in Programming by Veteran (69k points)
edited by | 743 views

1 Answer

+4 votes
  Call by Value : 3
  Call by Reference : 12
  Call by Copy-Restore : 12

Equivalent 'C' Code for :

  Call By Value    
#include <stdio.h> 
int foo(int x,int y,int z)
{ 
y = y+1; 
z = x+x; 
} 
int main(void)
{ 
int a = 3; 
int b = 3; 
foo(a+b,a,a); 
printf("%d",a); 
return 0; 
}
#include <stdio.h>
int foo(int *x,int *y,int *z)
{ 
*y = *y+1; 
*z = *x+*x;
} 
int main(void) 
{ 
int a = 3; 
int b = 3; 
int c = a+b; 
foo(&c,&a,&a); 
printf("%d",a); 
return 0; 
} 
 #include <stdio.h> 
 void foo(int *x,int *y,int *z)
 { 
 *y = *y+1; 
 *z = *x+*x;
 } 
 int main(void)
 { 
 int a=3; 
 int b=3; 
 int c=a+b; 
 int d,e;
 d = c;//copy 
 e = a;//copy 
 foo(&d,&e,&e); 
 a = e;//restore 
 c = d;//restore 
 printf("%d",a); 
 return 0;
 }

 

answered by Loyal (3k points)
edited by
Aditya's call by reference program :

 //Call by Reference(Call by reference is realised by passing address in C) :  
 
#include <stdio.h>  

int foo(int *x,int *y,int *z)
{      
    *y = *y+1;  
    *z = *x+*x;  
    
}  

int main(void)
{  
    int a = 3;  
    int b = 3;  
    int c = a+b;  
    
    foo(&c,&a,&a);
    printf("%d",a);  
    return 0;
    
    
}  

 

Call by copy-restore program :

//Call by Copy-restore :    
#include <stdio.h>  

void foo(int *x,int *y,int *z)
{       
    *y = *y+1;       
    *z = *x+*x;  
    
}  

int main(void)
{      
    int a=3;  
    int b=3;      
    int c=a+b;  
    int d,e;  
    d = c;//copy  
    e = a;//copy  
    foo(&d,&e,&e);  
    a = e;//restore    
    c = d;//restore  
    printf("%d",a);  
    return 0;
    
    
}

Related questions



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

33,687 questions
40,230 answers
114,268 comments
38,793 users