0% found this document useful (0 votes)
87 views14 pages

C++ 2310 Lecture Notes: Functions: Passing Parameters by Reference

This document discusses passing parameters by reference in C++ functions. It provides examples of passing arguments by reference so that changes made to parameters within functions are reflected in the original variables. Functions can have multiple outputs by passing parameters by reference. The address of the variable is passed, rather than its value, allowing the variable to be modified. Examples demonstrate passing both by reference and by value, and show how references allow a function to modify calling variables. Testing functions separately with driver programs and stubs is also covered.

Uploaded by

Ayesha Khan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
87 views14 pages

C++ 2310 Lecture Notes: Functions: Passing Parameters by Reference

This document discusses passing parameters by reference in C++ functions. It provides examples of passing arguments by reference so that changes made to parameters within functions are reflected in the original variables. Functions can have multiple outputs by passing parameters by reference. The address of the variable is passed, rather than its value, allowing the variable to be modified. Examples demonstrate passing both by reference and by value, and show how references allow a function to modify calling variables. Testing functions separately with driver programs and stubs is also covered.

Uploaded by

Ayesha Khan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 14

C++ 2310 lecture

notes

Functions: Passing
Parameters by
Reference
Passing Parameters by Reference




To have a function with multiple outputs, we have to
use pass by reference.
We use & to denote a parameter that is passed by
reference:
<type>& <variable>
Examples:
void Increment(int& Number);
void SumAve (double, double,double&, double&);
Passing Parameters by Reference
The corresponding argument must be a variable.
Increment(Inc);
SumAve (2.5, y+3, sum, mean);

The address (reference) of that variable is passed
to the function, instead of its value.
If the function changes the parameter value, the
change will be reflected in the corresponding
argument, since they share the same memory
location.
Pass by Reference: Example 1
To show how the function affects a variable which is used
as an argument:
#include <iostream>
void Increment(int& Number){
Number = Number + 1;
cout << "The parameter Number: "
<< Number << endl;
}
int main(){
int Inc = 10;
Increment(Inc); // parameter is a variable
cout << "The variable Inc is: "<<Inc<<endl;
return 0; }
Pass by Reference: Example 2
It is possible to use both pass by reference
and pass by value parameters in the same
function.

// Print the sum and average of two numbers
// Input: two numbers num_1 and num_2
// Output: sum of num_1 and num_2
// average of num_1 and num_2
#include <iostream>
void SumAve (double, double, double&, double&);

Pass by Reference: Example 2
int main ( ) {
double x, y, sum, mean;
cout << "Enter two numbers: ";
cin >> x >> y;
SumAve (x, y, sum, mean);
cout << "The sum is " << sum << endl;
cout << "The average is " << mean << endl;
return 0;
}
void SumAve(double no1, double no2, double&
sum, double& average) {
sum = no1 + no2;
average = sum / 2; }
Pass by Reference: Example 2
Data areas after call to SumAve:

Pass by Reference: Example 3
// Compare and sort three integers
#include <iostream.h>
void swap (int&, int&);
int main ( ) {
int first, second, third;// input integers
// Read in first, second and third.
cout << "Enter three integers: ";
cin >> first >> second >> third;
if (first > second) swap (first, second);
if (second > third) swap (second, third);
if (first > second) swap (first, second);
cout << "The sorted integers are " << first
<<" , "<<second<<" , "<<third << endl;
return 0; }
Pass by Reference: Example 3
// Function for swapping two integers
void swap (int& num_1, int& num_2) {
int temp;
temp = num_1;
num_1 = num_2;
num_2 = temp;
}
Pass by Reference: Example 4
// Pass-by-reference versus pass-by-value example
#include <iostream>
void One (int a, int b, int& c) {
int d;
a = 10; b = 11; c = 12; d = 13;
cout<<"The values of a, b, c, and d in One:\n";
cout << a << " " << b << " " << c << " "
<< d << endl;
}
void Two (int a, int b, int& d) {
int c = 0;
cout<<"The values of a, b, c, and d in Two:\n";
cout << a << " " << b << " " << c << " "
<< d << endl; }
Pass by Reference: Example 4
int main () {
int a = 1, b = 2, c = 3, d = 4;
cout<<"The original values of a,b,c,and d:\n";
cout << a << " " << b << " " << c << " "
<< d << endl << endl;
One(a, b, c);
cout<<"The values of a,b,c,and d after One:\n";
cout << a << " " << b << " " << c << " "
<< d << endl;
Two(a, b, d);
cout<<"The values of a,b,c,and d after Two:\n";
cout << a << " " << b << " " << c << " "
<< d << endl;
return 0;
}
Pass by Reference: Example 4
Output:
The original values of a,b,c,and d:
1 2 3 4
The values of a, b, c, and d in One:
10 11 12 13
The values of a, b, c, and d after One:
1 2 12 4
The values of a, b, c, and d in two:
1 2 0 4
The values of a, b, c, and d after two:
1 2 12 4
Testing and Debugging Functions
One major advantage of functions is that they can be designed,
coded and tested separately from the rest of the program.
Use a "driver" program to test a function with several inputs:

int main( ) {
for (int count = 1; count <= 13; count++){
diamond(count);
cout << " Calling diamond with size "
<< count <<endl;
}
return 0;
}
Testing and Debugging Functions
If a yet-to-be written function is needed in testing a program,
replace it with a "stub" for testing.
A stub has the same interface as the original function, but
not the full implementation.
Oftentimes, a stub contains just a simple return or cout
command.

void diamond(int size) {
cout << " diamond is called with size "
<< size <<endl;
}

You might also like