Fill This Form To Receive Instant Help
Homework answers / question archive / Consider the following program written in C syntax: void main() { int value = 2, list[5] = {1, 3, 5, 7, 9); swap(value, list[0]); swap(list[0], list[1); swap(value, list[value]); } void swap(int a, int b){ int temp; temp = a; a = b; b = temp; } For each of the following parameter-passing methods, what are all of the values of the variables value and list after each of the three calls to swap? a
Consider the following program written in C syntax:
void main() {
int value = 2, list[5] = {1, 3, 5, 7, 9);
swap(value, list[0]);
swap(list[0], list[1);
swap(value, list[value]);
}
void swap(int a, int b){
int temp;
temp = a;
a = b;
b = temp;
}
For each of the following parameter-passing methods, what are all
of the values of the variables value and list after each of the three
calls to swap?
a. Passed by value
b. Passes by reference
c. Passes by value-result
Assume the calls are not accumulative; that is, they are always
called with the initialized values of the variables, so their effects are
not accumulative.
(a) Passed by value
The swap function is passed by value. It means that the values passed
to swap have another copy and is used in the swap function. Any change
of the variables in swap won't affect the variables from the caller.
So after three calls to swap, all variables maintain the same values.
value = 2
list[5] = {1,3,5,7,9}
(b) Passed by reference
The correct swap function should be as follows.
void swap{ int &a, int &b ) {
int temp;
temp = a;
a = b;
b = temp;
}
When variables are passed to swap, there is no other copies. Any change
of the variable will infect the variable finally. We check the values
after each swap function.
(1) swap(value, list[0]);
value = 1
list[5] = {2,3,5,7,9}
(2) swap(list[0],list[1]);
value = 1
list[5] = {3,2,5,7,9}
(3) swap(value, list[value]) // note: list[value]=list[1]=2
value = 2
list[5] = {3,1,5,7,9}
(c) Passed by value-result
Passed by value, but keep the result of the change. The final values are
the same as passed by reference.
value = 2
list[5] = {3,1,5,7,9}
The difference is, passed by reference does not make copies of variables,
but passed by value-result does.