1.引用(代替指针的效果)
给变量取别名
语法:数据类型 &别名 = 原名
int a =10; int &b=a;
//现在b和a都可以操作数据10
这个数据内存 b=20;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
结果 :a=b=10
引用的注意事项
①引用必须初始化
②引用一旦初始化后就不可更改。
2 引用做函数参数
① 值传递(不改变实参的值)
②指针传递(&)(会改变实参的值)
③ 引用传递(优点:简化指针,更简单)
例如:交换函数
void swap2(int &a, int &b)
{
int tmp=a;
b=a;
b=tmp;
}
3 引用做函数的返回值
①.不要 返回局部变量的引用(局部变量由操作系统决定)
例如: void fun()
{
int a=10;
}
int main()
{
int &b=a;
cout<<a<<endl;
}
//错误的
②;静态变量,放在全局区,在程序结束后释放
4 引用的本质 引用的本质在c++内部的实现是一个指针常量 其实,引用最大的优点在于许多关于指针的步骤,编译器自动帮我们完成,该步骤不可见;
// 发现是引用,转化为int*const ref=&a;
void func(int &ref)
{
ref=100;
//ref是引用,转化为*ref=100;
}
int main()
{
int a=100; //自动转化为int* const ref=&a;指针常量的指针指向不可更改——>所以引用也不可更改
int &ref=a;
ref=20;//内部发现ref是引用,自动转化为*ref=20;
cout<<"a="<<a<<endl;
cout<<"ref="<<ref<<endl;
fun(a);
return 0;
}
5常量引用
使用场景:用来修饰形参,防止误操作;
int a=10;
通常运用 const 来保护实参,放止实参被修改 例子:
void show( const int &v)
{
v++/--;//不可更改const;
cout<<v<<endl;
}
int main()
{
int &ref=10;//该行错误,引用本身需要一个合法的空间; //加入const即可解决问题;
其原理为:
int temp=10; int &ref=temp; 构造了一个引用;//这里构造了一个temp变量(隐式转换)
const int &ref=10; //加入const后 不可以修改变量的值;
cout<<ref<<endl;
// 函数中利用常量,防止误操作改变实参的值
int a=10;
show(a);
system("pause");
return 0;
}
@希望对大家有帮助