如果是引用传值int cmp(const int &x,const int &y),的话将实参直接传递给函数,省去了将实参拷贝给形参的过程,再通过使用const保证函数不可以修改传给它的实参,能提升效率。
但是你的这个代码示例中,int cmp(const int x,const int y),首先还是要将实参的值拷贝给形参,然后再在函数中比较形参,所以效率并没有提升,另外这种形式的函数使用const完全是毫无意义,本身就算函数修改了形参的值,因为形参是实参的副本,所以根本不会影响到实参,使用const来保证函数无法修改形参的值又有什么意义呢?
这里面的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就知道这个变量不会发生改变。