C++快排函数调用里 用 const修饰比较时的变量有什么作用嘛?

比如调用sort

sort(num,num+k,cmp); 
int cmp(const int x,const int y) 
{ 
    return x > y; 
} 

这里用const 修饰这个起到什么作用呢?
提高了效率嘛?

阅读 4.1k
3 个回答

这里面的const作用是保证修饰的参数在函数内部不被修改,

如果是引用传值int cmp(const int &x,const int &y),的话将实参直接传递给函数,省去了将实参拷贝给形参的过程,再通过使用const保证函数不可以修改传给它的实参,能提升效率。

但是你的这个代码示例中,int cmp(const int x,const int y),首先还是要将实参的值拷贝给形参,然后再在函数中比较形参,所以效率并没有提升,另外这种形式的函数使用const完全是毫无意义,本身就算函数修改了形参的值,因为形参是实参的副本,所以根本不会影响到实参,使用const来保证函数无法修改形参的值又有什么意义呢?

详细的了解,请看我的文章:http://segmentfault.com/a/1190000003696397

另外建议你多看一些C、C++的书,主要是关于指针和内存的书,这里面的回答还只是比较片面的,希望你能多看一些书去系统化的了解

《C和指针》《C专家编程》《Effective C++》……书还是挺多的

楼上答案很详细了,补充一个作用是const可以提高代码的可读性,看到const就知道这个变量不会发生改变。

都是值传递,不提高效率。

感觉这样多此一举,因为传参过程中复制了一份,修改参数也不修改原值。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏