搜索

首页  >  问答  >  正文

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

PHPzPHPz2804 天前974

全部回复(3)我来回复

  • PHPz

    PHPz2017-04-17 12:08:02

    这里面的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 》……书还是挺多的

    回复
    0
  • 天蓬老师

    天蓬老师2017-04-17 12:08:02

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

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

    回复
    0
  • 阿神

    阿神2017-04-17 12:08:02

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

    回复
    0
  • 取消回复