c++之引用
发布时间:2020-12-16 09:05:40 所属栏目:百科 来源:网络整理
导读:什么是引用? 引用: 给数据起别名 格式: 数据类型 数据名 = 数据名; #include iostream using namespace std; int main() { int a = 10 ; int b = a; cout " a的值是: " a endl; cout b的值是: " b endl; a = 11 ; cout " a endl; cout endl; b = 12 en
什么是引用? 格式:数据类型 数据名 = &数据名; #include <iostream> using namespace std; int main() { int a = 10; int &b = a; cout << "a的值是:" << a<<endl; cout << b的值是:" << b << endl; a = 11; cout << " << a << endl; cout << endl; b = 12 endl; system(pause"); return 0; } 输出: b引用a,b和a指向相同的内存地址, 所以当其中一个变化,另一个的值也会进行相应的变化。 注意事项:
引用做函数的参数: 作用:参数传递时,可以通过引用的技术让形参修饰实参。 优点:简化指针修改实参。 #include <iostream> //值传递 void swap1(int a, b) { int tmp = a; a = b; b = tmp; } 地址传递 void swap2(int* a,1)">int*int tmp = *a; *a = *b; *b =引用传递,形参可以修饰实参 也就是&a,&b是a,b的别名 void swap3(int &a,1)">int &b) { tmp; } ; int b = 20 endl; swap1(a,b); cout << swap1之后a的值是:swap1之后b的值是: endl; swap2(&a,&b); cout << swap2之后a的值是:swap2之后b的值是: endl; swap3(a,1)">swap3之后a的值是:swap3之后b的值是:; } 输出: 不难发现,地址传递和引用传递均可以通过形参的改变而影响实参的值。 引用做函数的返回值: #include<iostream> 不能返回局部变量的引用 int& func() { return a; } 函数的调用可以作为左值 func2() { 静态变量,在所有程序结束后才释放 static a; } int& res = func2(); cout << res << endl; cout << res << endl; func2() = 100相当于都是变量a的引用 cout << res <<; } 输出: 一句话来说就是:一荣俱荣,一损俱损。? 引用的本质: 本质:引用的本质在C++内部实现实际上是一个指针常量; #include<iostream> 发现是引用,转换为int* const ref = &a; void func(ref) { ref = 100;ref是引用,转换为*ref=100; } 自动转换成int* const ref = &a;指针常量是指向不可以更改,值可以更改 int& ref = a; 20;内部发现ref是引用,自动转换成*ref=20; cout << a="<<a << endl; cout <<ref="<< ref << endl; func(a); cout << " << ; } 输出: 常量引用: 作用:用来修饰形参,防止误操作。 const tmp) { tmp= 100;不合法了 } nt a = ; int* ref = a;不合法,必须是引用一段合法的内存空间 int* ref2 = 10;合法 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |