C++引用主要有变量的引用,指针的引用,结构体的引用,函数形参的引用。
变量的引用:
int a=10;
int &b=a;
b=20;
指针的引用:
注意此处指针引用的格式,必须先把引用对象的类型表明,然后再+&+引用名
int* x=&a;
int* &y=x;//注意此处指针引用的格式,必须先把引用对象的类型表明,然后再+&+引用名
*y=33;
函数形参的引用:
可以省去利用指针进行传值时所带来的理解困难。
下面为四种引用的测试代码:
#include <iostream>
using namespace std;
typedef struct {//定义一个结构体
int x;
int y;
}Cool;
void fun(int &x,int &y);//函数实现的功能是交换两个参数的值
int main() {
cout << "本程序目的在于测试引用的使用,需要注意的是在定义引用时必须初始化。" << endl;
cout << "第一个板块,简单测试对于变量的引用:" << endl;
int a=10;
int &b=a;
b=20;
cout<<"a:"<<a<<" b:"<<b<<" a+b:"<<a+b<<endl;
cout << "第二个板块,简单测试对于指针的引用:" << endl;
int* x=&a;
int* &y=x;//注意此处指针引用的格式,必须先把引用对象的类型表明,然后再+&+引用名
*y=33;
cout<<"*x:"<<*x<<" *y:"<<*y<<" *x+*y:"<<*x+*y<<endl;
cout << "第三个板块,简单测试对于结构体的引用:" << endl;
Cool c1;
Cool &c2=c1;
c2.x=9;
c2.y=99;
bool aa;
aa=(c1.x==c2.x);
cout<<"c1.x:"<<c1.x<<" c2.x:"<<c2.x<<" c1.x和c2.x是否相等:"<<boolalpha<<aa<<endl;
cout << "第四个板块,简单测试对于函数形参的引用:" << endl;
int d1=21,d2=46;
fun(d1,d2);
cout<<"d1:"<<d1<<" d2:"<<d2<<" d1+d2:"<<d1+d2<<endl;
return 0;
}
void fun(int &x,int &y){
int c=0;
c=x;
x=y;
y=c;
}
运行结果为:
本程序目的在于测试引用的使用,需要注意的是在定义引用时必须初始化。
第一个板块,简单测试对于变量的引用:
a:20 b:20 a+b:40
第二个板块,简单测试对于指针的引用:
*x:33 *y:33 *x+*y:66
第三个板块,简单测试对于结构体的引用:
c1.x:9 c2.x:9 c1.x和c2.x是否相等:true
第四个板块,简单测试对于函数形参的引用:
d1:46 d2:21 d1+d2:67
进程已结束,退出代码 0