const和三种类型传递

局部静态变量:第一次运行到定义时初始化,程序终止销毁

参数传递:

值传递:

函数对形参的所有操作不会影响实参;

指针传递:

执行拷贝操作时拷贝的是指针的值。拷贝后两个指针是不同的指针;
本质上还是值传递;

void reset(int *ip)

{

*ip = 0; //改变的是指针所指的对象

ip = 0; //改变的是ip的局部变量,实参并未改变

}

int main()

{

int i = 40;

reset(&i); //改变的是 i 的值并非是 i 的地址

std::cout << "i = " << i << std::endl;

}

引用传递:

void reset(int &i)

{

i = 0;

}

int main()

{

int j = 42;

reset(j); //引用传递,值会被改变

std::cout << j << std::endl;

}

指针传递和引用传递的区别:

指针是存了值的地址的值,也还是实现了值传递;

引用传入的是变量名称,相当于在函数内部使用了外部的别名,操作的依然是变量本身;

const 修饰变量:

const 修饰变量,可以阻止变量发生改变,但是在定义一个const的时候通常需要直接初始化;

  1. 只有一个const,如果 const 位于 * 左侧表示指针所指的数据是常量,不能通过解引用修改数据;指针本身是变量可以指向其他内存单元;
  2. 只有一个const,如果 const 位于 * 右侧,表示指针本身是常量,不能指向其他内存地址,但是指针所指的数据可以通过解引用进行修改;
    在这里插入图片描述

const 修饰函数参数:

const经常用于修饰引用类型参数使传递的参数不可发生改变;

void test(const A &a);

/*

​	形参的引用传递的效率是高于值传递的,因为在传递大型的数据时拷贝效率是很低的而引用传递的是实参的别名本质上传递的还是实参并不会发生拷贝;

​	但是引用传递,形参发生变化实参也会发生改变,所以应用const就可以很好的解决这个问题,这也就是为什么const经常会用于修饰引用(&);

*/

最主要的就是引用传递的效率优于值传递,为了保证实参不会发生变化所以使用const修饰引用;

参考:
https://blog.csdn.net/aiqianqi1796/article/details/101835883

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值