# 引用形參,相當于傳遞指針,可修改原變量的值。
* 引用形參的好處:無須複制實參,直接使用,既節省空間,又減少記憶體消耗。
Demo1:
#include <iostream>
using namespace std;
/*引用形參*/
//交換函數
void swap(int a, int b){
a ^= b;
b ^= a;
a ^= b;
}
//引用形參修改實參
void swap2(int &a, int &b){
a ^= b;
b ^= a;
a ^= b;
}
int main()
{
int a = 38, b = 49;
cout << "交換之前:" << endl;
cout << "a = " << a << endl << "b = " << b << endl << endl;
swap(a, b);
cout << "第一次交換:" << endl;
cout << "a = " << a << endl << "b = " << b << endl << endl;
swap2(a, b);
cout << "第二次交換:" << endl;
cout << "a = " << a << endl << "b = " << b << endl;
return 0;
}
輸出:

//注意:将不需要修改的引用形參定義為const引用
Demo2:
#include <iostream>
using namespace std;
int calc(int num1, int num2, int &y){
//num1和num2需要複制x和y的
//當參數多的時候,浪費空間和時間
//y傳引用:無須複制;若不必修改,可使用常引用const int &y
y = num1-num2;
return num1+num2;
}
int main()
{
int x, y;
x = 55;
y = 33;
x = calc(x,y,y);
cout << "加法結果:" << x << endl;
cout << "減法結果:" << y <<endl;
return 0;
}
輸出:
# vector和其他容器類型的形參。
* 順序容器:
vector、list、deque等等.
* 關聯容器:
map、set等等.
Demo3:
#include <iostream>
using namespace std;
/*vector和其他容器類的形參*/
#include <vector>
//引用形參
void print(vector<double> &v)
{
vector<double>::iterator begin = v.begin();
while (begin != v.end()){
cout << *begin++ << endl;
}
}
//傳入容器疊代器(~常用方法~)
void print_2(vector<double>::const_iterator bgn,
vector<double>::const_iterator end)
{
while (bgn != end){
cout << *bgn++ << endl;
}
}
int main()
{
vector<double> vec;
vec.push_back(3.15);
vec.push_back(5.88);
vec.push_back(8.44);
cout << "容器引用:\n";
print(vec);
cout << "\n容器疊代器:\n";
print_2(vec.begin(), vec.end());
return 0;
}
輸出: