搜尋

首頁  >  問答  >  主體

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

PHPzPHPz2802 天前961

全部回覆(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
  • 取消回覆