Const正确性 - Const指针作为函数参数

时间:2011-10-24 18:53:14

标签: c++ c

考虑像

这样的功能
char* strcpy (char* destination, const char* source);

(address)source的给定值是const,因为函数的作者想要显示source的值不会被strcpy改变。指针本身不会被strcpy更改为。为什么不写

char* strcpy (char* destination, const char* const source);

非常感谢提前。

3 个答案:

答案 0 :(得分:11)

指针本身是按值传递的,所以没有意义。

答案 1 :(得分:2)

它也可以这样写,但在任何情况下它都不会影响调用者。

在第二种情况下,原型说不应该修改指针本身,但无论如何都不能修改调用者的指针,因为在调用函数时它被复制(通过值传递)。

使用const标记值传递的变量仅对函数的实现者有用,可以使他的意图清晰。

答案 2 :(得分:0)

您将看到是否尝试实现这两个功能,它们实际上是相同的。此时的const修饰符仅对函数体有意义,因为参数无论如何都是按值传递的。

error: function "strcpy" has already been defined
char* strcpy (char* destination, const char* const source)