functions ----------- pass by value pass by reference ic 210
Post on 21-Dec-2015
217 views
TRANSCRIPT
Functions-----------
Pass by ValuePass by Reference
IC 210
Arguments vs. ParametersArguments:
• function call
• actual values passed to function
Parameters:
• Placeholder in function heading waiting for arguments
answer = cube (x);
double cube (double inputVal)
Argument (function call)
parameter (function heading)
What is the output?
int DoubleIt (int);int main ( ){ int x = 5;
int results = DoubleIt (x);cout << x;return 1;
}int DoubleIt (int y)} y = 2*y;return y;}
??5
Call by Value
X
results
Call by value: “Sending a copy”
5
DoubleIt
?
int DoubleIt (int);int main ( ){ int x = 5;
int results = DoubleIt (x);cout << x;return 1;
}int DoubleIt (int y)} y = 2*y;return y;}
X
results
Call by value: “Sending a copy”
5
?
?DoubleIt
int DoubleIt (int);int main ( ){ int x = 5;
int results = DoubleIt (x);cout << x;return 1;
}int DoubleIt (int y)} y = 2*y;return y;}
X
results
Call by value: “Sending a copy”
5
?
?DoubleIt
int DoubleIt (int);int main ( ){ int x = 5;
results = DoubleIt (x);cout << x;return 1;
}int DoubleIt (int y)} y = 2*y;return y;}
y ?
X
results
y
Call by value: “Sending a copy”
5
?
?
?X’s value is copied into Y
DoubleIt
int DoubleIt (int);int main ( ){ int x = 5;
int results = DoubleIt (x);cout << x;return 1;
}int DoubleIt (int y)} y = 2*y;return y;}
X
results
y
Call by value: “Sending a copy”
5
?
?
5
DoubleIt
int DoubleIt (int);int main ( ){ int x = 5;
int results = DoubleIt (x);cout << x;return 1;
}int DoubleIt (int y)} y = 2*y;return y;}
X
results
y
Call by value: “Sending a copy”
5
5
?
10
DoubleIt ?
int DoubleIt (int);int main ( ){ int x = 5;
int results = DoubleIt (x);cout << x;return 1;
}int DoubleIt (int y)} y = 2*y;return y;}
X
results
y
Call by value: “Sending a copy”
10DoubleIt
10
int DoubleIt (int);int main ( ){ int x = 5;
int results = DoubleIt (x);cout << x;return 1;
}int DoubleIt (int y)} y = 2*y;return y;}
5
?
X
results
y
Call by value: “Sending a copy”
5
?
DoubleIt 10
10
int DoubleIt (int);int main ( ){ int x = 5;
int results = DoubleIt (x);cout << x;return 1;
}int DoubleIt (int y)} y = 2*y;return y;}
X
results
Call by value: “Sending a copy”
5
10
DoubleIt 10
int DoubleIt (int);int main ( ){ int x = 5;
int results = DoubleIt (x);cout << x;return 1;
}int DoubleIt (int y)} y = 2*y;return y;}
X
results
Call by value: “Sending a copy”
5
10
DoubleIt ?
int DoubleIt (int);int main ( ){ int x = 5;
int results = DoubleIt (x);cout << x;return 1;
}int DoubleIt (int y)} y = 2*y;return y;}
X
results
Call by value: “Sending a copy”
5
DoubleIt ?
10
int DoubleIt (int);int main ( ){ int x = 5;
int results = DoubleIt (x);cout << x;return 1;
}int DoubleIt (int y)} y = 2*y;return y;}
int TripleIt (int&); // Prototypeint main ( ) // Function Definition{ int x = 7;
int results = TripleIt (x);cout << x << “,“ << results;return 1;
}int TripleIt (int& y) // Function Definition{ int z = y;
y = 2 * y;return y + z;}
What is the output?
??14,21
Call by
Reference
int TripleIt (int&); // Prototypeint main ( ) // Function Definition{ int x = 7;
int results = TripleIt (x);cout << x << “,“ << results;return 1;
}int TripleIt (int& y) // Function Definition{ int z = y;
y = 2 * y;return y + z;}
Call by reference: “Getting the original”
TripleIt
x 7
int TripleIt (int&); // Prototypeint main ( ) // Function Definition{ int x = 7;
int results = TripleIt (x);cout << x << “,“ << results;return 1;
}int TripleIt (int& y) // Function Definition{ int z = y;
y = 2 * y;return y + z;}
results
Call by reference: “Getting the original”
TripleIt
?
x 7
results ?
?TripleIt
Call by reference: “Getting the original”
int TripleIt (int&); // Prototypeint main ( ) // Function Definition{ int x = 7;
int results = TripleIt (x);cout << x << “,“ << results;return 1;
}int TripleIt (int& y){ int z = y;
y = 2 * y;return y + z;}
x 7
int TripleIt (int&); // Prototypeint main ( ) // Function Definition{ int x = 7;
int results = TripleIt (x);cout << x << “,“ << results;return 1;
}int TripleIt (int& y){ int z = y;
y = 2 * y;return y + z;}
results ?
?TripleIt
Call by reference: “Getting the original”
x 7
int TripleIt (int&); // Prototypeint main ( ) // Function Definition{ int x = 7;
int results = TripleIt (x);cout << x << “,“ << results;return 1;
}int TripleIt (int& y) { int z = y;
y = 2 * y;return y + z;}
results
y, x
?
?
X’s address is referenced
TripleIt
Call by reference: “Getting the original”
7
int TripleIt (int&); // Prototypeint main ( ) // Function Definition{ int x = 7;
int results = TripleIt (x);cout << x << “,“ << results;return 1;
}int TripleIt (int& y){ int z = y;
y = 2 * y;return y + z;}
results
y, x
?
TripleIt ?
Call by reference: “Getting the original”
z 7
7
int TripleIt (int&); // Prototypeint main ( ) // Function Definition{ int x = 7;
int results = TripleIt (x);cout << x << “,“ << results;return 1;
}int TripleIt (int& y) { int z = y;
y = 2 * y;return y + z;}
results
y, x
?
TripleIt ?
Call by reference: “Getting the original”
z 7
714
int TripleIt (int&); // Prototypeint main ( ) // Function Definition{ int x = 7;
int results = TripleIt (x);cout << x << “,“ << results;return 1;
}int TripleIt (int& y){ int z = y;
y = 2 * y;return y + z;}
results
y, x
?TripleIt
14
?
Call by reference: “Getting the original”
z 7
21
results
y, x
?
TripleIt 21
14
Call by reference: “Getting the original”
int TripleIt (int&); // Prototypeint main ( ) // Function Definition{ int x = 7;
int results = TripleIt (x);cout << x << “,“ << results;return 1;
}int TripleIt (int& y){ int z = y;
y = 2 * y;return y + z;}
z 7
_
results 21
TripleIt 21
Call by reference: “Getting the original”
int TripleIt (int&); // Prototypeint main ( ) // Function Definition{ int x = 7;
int results = TripleIt (x);cout << x << “,“ << results;return 1;
}int TripleIt (int& y){ int z = y;
y = 2 * y;return y + z;}
x 14
results 21
TripleIt ?
Call by reference: “Getting the original”
int TripleIt (int&); // Prototypeint main ( ) // Function Definition{ int x = 7;
int results = TripleIt (x);cout << x << “,“ << results;return 1;
}int TripleIt (int& y){ int z = y;
y = 2 * y;return y + z;}
x 14