鱼C论坛

 找回密码
 立即注册
查看: 3182|回复: 6

)const修饰函数参数的问题

[复制链接]
发表于 2012-7-3 13:18:40 | 显示全部楼层 |阅读模式
1鱼币
1)const修饰函数参数
a.传递过来的参数在函数内不可以改变(无意义,因为Var本身就是形参)
void function(const int Var)
为什么var 本身是形参 就无意义了呢 ? 跪求解答

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-3 17:55:51 | 显示全部楼层
const 有以下几种运用
当返回值修饰const 不能继续赋值 不能当左值
当参数为const修饰 表示参数不能修改 修饰参数为指针类型用的
非指针无意义的意思是改的只是调用函数的拷贝
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-6 17:45:46 | 显示全部楼层
因为形参本身就是临时的,函数并不会改变其实参的值。const int var申明的变量实参是不会改变的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-6 17:47:09 | 显示全部楼层
我对const 也不是太理解:(
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-23 11:25:04 | 显示全部楼层
当然会有意义~一般如果你传入形参很大。可能就要传值的引用进去,这时你又不想被在函数内修改了值。就会用const &。
还有诸如const int *p。int* const p;int const *p用法;等等
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-23 11:34:22 | 显示全部楼层
当然有意义,只是出题者没想出它有什么意义。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-23 11:48:44 | 显示全部楼层
例如
1    int a = 0;
2    func1(a);         //函数中的a,是函数新创建的一个备份,不管函数对a做何改动,都不会影响上一行a的值
3    func2(&a);     //传递进函数的是a的地址,此时函数将直接对第1行的a进行操作,可能改变a的值
/* 当你不希望第1行的值在函数中被修改,就要用const来限定它,在使用字符串的时候经常出现这种情况,const int Var也不能说完全没有意义,它表示在函数中不能修改a的值,不过通常不会这样写程序 */
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-14 01:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表