1.定义及表示
引用是已定义变量的别名,用&声明引用。
int price = 1;
int & prices = price;
prices是指向int变量的引用,price与其引用变量prices的值和地址都相同。
#include<iostream>
using namespace std;
int main()
{
int x_ming = 50;
int & l_ming = x_ming;
cout << "x_ming: " << x_ming << " l_ming: " << l_ming << endl;
cout << "x_ming adress: " << &x_ming << " l_ming adress: " << &l_ming << endl;
int z_sang = 100;
l_ming = z_sang;
cout << "z_sang: " << z_sang << " x_ming: " << x_ming << " l_ming: " << l_ming << endl;
cout << "z_sang adress: "<< &z_sang << " x_ming adress: " << &x_ming << " l_ming adress: " << &l_ming << endl;
system("pause");
return 0;
}
x_ming: 50 l_ming: 50
x_ming adress: 0017FBB0 l_ming adress: 0017FBB0
z_sang: 100 x_ming: 100 l_ming: 100
z_sang adress: 0017FB98 x_ming adress: 0017FBB0 l_ming adress: 0017FBB0
请按任意键继续. . .
(编故事)有一个人小名叫小明(x_ming)大名叫李明(l_ming),考试考了50分,嫉妒张三(z_sang)考试考了100分,于是,他把成绩单上的50分改成和张三一样的100分,拿回家给家长看,家长惊讶,遂call老师,查到教务处系统是50分,遂被教训。
int x_ming;
int & l_ming;
l_ming = x_ming;
//error:声明引用变量时初始化
引用更接近const指针,一旦和某个变量关联起来,必是生死相随。
int & l_ming = x_ming;
int * const p = &x_ming;
2.引用用作函数参数
按引用传递,按值传递,按指针传递。
#include<iostream>
using namespace std;
void swap_by_value(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
void swap_by_point(int * a, int * b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void swap_by_reference(int & a, int & b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main()
{
int x_ming = 50;
int z_sang = 100;
cout << "x_ming: " << x_ming << " z_sang:" << z_sang << endl;
swap_by_value(x_ming, z_sang);
cout << "swap_by_value result:\n" << "x_ming: " << x_ming << " z_sang: " << z_sang << endl;
swap_by_point(&x_ming, &z_sang);
cout << "swap_by_point result:\n" << "x_ming: " << x_ming << " z_sang: " << z_sang << endl;
swap_by_reference(x_ming, z_sang);
cout << "swap_by_reference result:\n" << "x_ming: " << x_ming << " z_sang: " << z_sang << endl;
system("pause");
return 0;
}
x_ming: 50 z_sang:100
swap_by_value result:
x_ming: 50 z_sang: 100
swap_by_point result:
x_ming: 100 z_sang: 50
swap_by_reference result:
x_ming: 50 z_sang: 100
请按任意键继续. . .
按引用传递和按指针传递都成功的实现了交换功能。