C ++
引用
引用概念
对变量起另外一个名字(外号),
这个名字称为该变量的引用。如:
int max;
int &refmax = max;
refmax并没有重新在内存中开辟单元,只是引用max的单元。max与refmax在内存中战胜同一地址,即同一地址两个名字。
#include <iostream>
using namespace std;
int main(void)
{
int max;
int &refmax = max;
max = 5;
refmax = 10;
refmax = max + refmax;
cout << max << endl;
return 0;
}
|
对引用类型的变量,说明以下几点:
1、引用在定义的时候要初始化。
2、对引用的操作就是对被引用的变量的操作。
3、引用类型变量的初始化不能是一个常数。如:int &ref1 = 5; //是错误的。
4、引用同变量一样有地址,可以对其地址进行操作,即将其地址赋给一指针。
5、可以用动态分配的内存来初始化一个引用变量。
指针与引用的区别:
1、 指针是通过地址间接访问某个变量,而引用是通过别名直接访问某个变量。
2、 引用必须初始化,而一旦被初始化后不得再作为其他变量的别名。
当&的前面有类型符时(如int &a),它必然是对引用的声明;如果前面无类型符(如cout << &a),则是取变量的地址。
2. 引用的用途
引用的用途主要是用来作函数的参数或函数的返回值。引用作函数的形参,实际上是在被调函数中对实参变量进行操作。
#include <iostream>
using namespace std;
void change(int &x, int &y)
{
int t;
t = x; x = y; y = t;
}
int main(void)
{
int a = 3, b = 5;
change(a,b);
cout << a << '\t' << b <<endl;
}
|
引用作为形参,实参是变量而不是地址,这与指针变量作形参不一样。
#include <iostream>
using namespace std;
void dd(int &x, int &y, int z)
{
x = x + z;
y = y - z;
z = 10;
cout << "(2)" << x << '\t' << y << '\t' << z <<endl;
}
int main(void)
{
int a = 3, b = 4, c = 5, i;
for (i = 0; i < 2; i++) {
dd(a, b, c);
cout<< "(1)" << a << '\t' << b << '\t' << c <<endl;
}
}
|
#include <iostream>
using namespace std;
void f1(int *px) { *px += 10;}
void f2(int &xx) { xx += 10;}
int main(void)
{
int x= 0;
cout << "x=" << x << endl;
f1(&x);
cout << "x=" << x << endl;
f2(x);
cout << "x=" << x << endl;
}
|
函数的返回值为引用类型
可以把函数定义为引用类型,这时函数的返回值即为某一变量,所以可对其返回值进行赋值操作。这一点类同于函数的返回值为指针类型。
#include <iostream>
using namespace std;
int a = 4;
int &f(int x)
{
a = a + x;
return a;
}
int main(void)
{
int t =5;
cout << f(t) << endl;
f(t) = 20;
cout << f(t) << endl;
t = f(t);
cout << f(t) << endl;
}
|
结果:
9
25
60
阅读(285) | 评论(0) | 转发(0) |