C++回顾day02---<引用>---待补充
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++回顾day02---<引用>---待补充,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2755字,纯文字阅读大概需要4分钟。
内容图文
![C++回顾day02---<引用>---待补充](/upload/InfoBanner/zyjiaocheng/835/097399aa690849b482b2bd12dae295d0.jpg)
一:引用概念---引用就是为一个变量起一个别名
每个变量都是指向一块内存空间的标识,引用就是重新设置一个标识,但是这个标识还是指向同一个内存空间
和指针类似(其实引用本质就是使用了一个常指针 const int* b; 可修改内存值,不可修改指针地址),都可以直接操作同一块内存
但是引用的可读性更好,在一些场合可以代替指针
二:简单使用(同指针一起)
//1.值传递 void swap01(int a, int b) { int temp = a; a = b; b = temp; } //2.指针传递 void swap02(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } //3.引用传递 void swap03(int& a, int& b) { int temp = a; //可读性好些 a = b; b = temp; } void main() { int a1 = 1, b1 = 2; int a2 = 1, b2 = 2; int a3 = 1, b3 = 2; swap01(a1, b1); swap02(&a2, &b2); swap03(a3, b3); cout << "值传递:" << a1 << " " << b1 << endl; cout << "指针传递:" << a2 << " " << b2 << endl; cout << "引用传递:" << a3 << " " << b3 << endl; system("pause"); return; }
三:函数返回值涉及引用
(一)当函数返回值为引用(局部变量的引用)
int& getRef() { int a = 10; cout << &a << endl; return a; //这是局部变量,一般会在函数结束后被释放栈空间 //但是若是返回的类型是引用,则会将该变量保留 <<重点>> //类似其他语言中,只有当该内存空间无变量指向时,才会被回收 <<重点>> //但是返回引用,则说明,将有其他变量指向该内存空间,不允许回收,延长了生命周期 <<重点>> }
void main() { int a = getRef(); //相当于直接传值出来 cout << &a << " " << a << endl; int &b = getRef(); //将b指向局部变量a的地址,延长了变量生命周期 cout << &b << " " << b << endl; system("pause"); return; }
(二)当函数返回值为引用(static变量的引用)
由于static变量的生命周期是当前文件,故不局限于某个函数。 ---既可以作为其他引用的初始值,还可以作为左值进行使用
int& getRef() { static int a = 10; cout << &a << endl; return a; } void main() { int &b = getRef(); //将b指向局部变量a的地址,延长了变量生命周期 cout << &b << " " << b << endl; getRef() = 15; //允许作为左值使用 cout << &b << " " << b << endl; system("pause"); return; }
(三)当函数返回值为引用(返回值是形参) //相当于(一)局部变量,这里用于连接内存和引用
引用归根到底还是对内存的新标识
int& g2(int* p) { *p = 100; cout << p << endl; return *p; //看返回的是一个值,实际该值存放的内存还是和a1内存是一致的,返回的引用地址也就是这个内存地址 } void main() { int a1 = 101; cout << &a1 << " " << a1 << endl; int& a2 = g2(&a1); //a2指向返回的内存地址引用 cout << &a2 << " " << a2 << endl; system("pause"); return; }
(四)当函数返回值为引用(对象的引用,涉及拷贝构造函数和=操作符重载)---需要补充
四:常引用const
(一)使用变量初始化const引用---会将该 引用变量 变为只读
正常使用
尝试修改局部变量
尝试修改引用变量
(二)常用在为他人提供接口,同C++回顾day01---
设置变量内存为只读,不允许使用接口的用户进行数据修改,只可以进行数据读取
void ReadOnly(const int& a) { cout << &a << " " << a << endl; //a = 110; //不允许修改 } void main() { int a1 = 100; ReadOnly(a1); a1 = 101; ReadOnly(a1); }
内容总结
以上是互联网集市为您收集整理的C++回顾day02---<引用>---待补充全部内容,希望文章能够帮你解决C++回顾day02---<引用>---待补充所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。