当前位置:
首页 >
行业知识 >
【C++入门篇】引用&&内联函数&&auto&&范围for&&nullptr
行业知识
【C++入门篇】引用&&内联函数&&auto&&范围for&&nullptr
2026-11-09 05:19:52
来源:互联网转载
文章目录
- 6.引用
- 概念
- 引用特性
- 常引用
- 引用的使用场景
- 1.引用做函数参数
- 2.引用做返回值
- 传值,传引用的效率比较
- 测试代码
- 值和引用作为返回值类型的性能比较
- 测试代码
- 引用和指针的区别
- 结论
- 7.内联函数
- 面试题:宏的优缺点
- 8.auto关键字(C++11)
- 简介:
- auto使用规则
- auto不能推导的场景
- 9.基于范围的for循环(C++11)
- 语法
- 范围for的使用条件:
- 10.指针空值nullptr(C++11)
- C++98中的指针空值
- ���意点:
6.引用
C语言中函数的传参有两种方式:
1.传值 2.传址
虽然这两种方式都可以实现函数传参但是却各自有着自己的优缺点:
传值:无法改变形参的值
传址:不是很形象而且不安全
在升级版C++中为了解决这种问题就使用了引用&
概念
引用不是新定义一个变量,而是给已存在变量取了一个别名
编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间,
引用的方法:
- 类型& 引用变量名(对象名) = 引用实体;
例子1
#includeusing namespace std;int main(){ int a = 10; //引用定义 int& b = a; //取地址 int* pa = &a; //编译器不会为引用变量开辟内存空间 cout int a = 10; int& ra = a;//int a = 10;double& b = a;} int a = 10; int& b = a; cout int a = 10;int& b = a;double b = 1.1;//err} double d = 3.14; //int& rd = d; //err类型不同 const int& b = d;//OK return 0;} cout const int a = 10; const int&b = a; func(a);//err a可读 引用传参给x,x是可读可写,权限放大,err func(10);//err 10是常数只可读} cout const int a = 10; const int& b = a; func(a); //10 func(10); //10} const int& b = M;//ok,b:只可读 M:只可读 权限不变 // int& c = M;//err M是常数只可读,而c可读可写,权限扩大} int tmp = *p1; *p1 = *p2; *p2 = tmp;}//函数修饰名:_Z4swapiivoid Swap(int r1,int r2)//传值{ int tmp = r1; r1 = r2; r2 = tmp;}//函数修饰名:_Z4swapririvoid Swap(int& r1,int& r2) //传引用{ int tmp = r1; r1 = r2; r2 = tmp;} int tmp = r1; r1 = r2; r2 = tmp;}int main(){ int a = 1; int b = 2; cout int c = x + y;return c;}int main(){int ret = Add(1, 2);cout int c = x + y;return c;}int main(){int ret = Add(1, 2);cout int c = x + y; return c;}int main(){ int& ret = Add(1,2);//ret也是c的引用 cout //n放在静态区,出了函数栈帧也不销毁,所以可以使用传引用返回 static int n = 0; n++; return n;}int main(){ int a = Count(); cout return str[i];}int main(){ char arr[10] = "Mango"; char c = func(arr, 3); cout int* p =(int*)malloc(sizeof(int)); return *p;}//方式2: errint*& fun(){ int* p =(int*)malloc(sizeof(int)); return p;}static int a[N];return a[i];//返回的是a[i]的别名}int main(){//读for (size_t i = 0; i
- 类型& 引用变量名(对象名) = 引用实体;
下一篇:宝塔面板建站怎么访问?