这两天在C语言的基础上看了C++了一部分,现在看到了除了C语言可以通过值传递和地址传递之外,还可以通过引用的放大进行传递。
其意义就相当于给变量起一个别名。
定义方法:
int a;
int &b=a;
注意点:
(1).应用只是声明,不是定义。
(2).声明的时候不需初始化。
(3).初始化之后不能别其他变量再次引用。
(4).不能引用数组。(部分编译器可以,但是这种行为会破环稳定性。)
(5).不能建立引用的引用。
实践中发现很多这句话的真正解释好像于书上不同,而且书上本身的例题也是违反了定义。
书上的定义:
int a=3;
int &b=a;
int &c=b;
其实我认为这样是对的,真正错误的是以下形式:
int a=3;
int &b=a;
int &&c=b;
问题:通过引用把三个整数从小到大排列。
#include<iostream>
using namespace std;
void change(int &x,int &y)
{
int temp;
temp=x;
x=y;
y=temp;
}
void sort(int &a,int &b,int &c)
{
if(a>b)change(a,b);
if(a>c)change(a,c);
if(b>c)change(b,c);
}
int main()
{
int m,n,p;
cin>>m>>n>>p;
sort(m,n,p);
cout<<m<<" "<<n<<" "<<p<<endl;
return 0;
}
运行结果:
10 4 2 2 4 10