考虑像
这样的功能char* strcpy (char* destination, const char* source);
(address)source的给定值是const,因为函数的作者想要显示source的值不会被strcpy改变。指针本身不会被strcpy更改为。为什么不写
char* strcpy (char* destination, const char* const source);
非常感谢提前。
答案 0 :(得分:11)
指针本身是按值传递的,所以没有意义。
答案 1 :(得分:2)
它也可以这样写,但在任何情况下它都不会影响调用者。
在第二种情况下,原型说不应该修改指针本身,但无论如何都不能修改调用者的指针,因为在调用函数时它被复制(通过值传递)。
使用const
标记值传递的变量仅对函数的实现者有用,可以使他的意图清晰。
答案 2 :(得分:0)
您将看到是否尝试实现这两个功能,它们实际上是相同的。此时的const
修饰符仅对函数体有意义,因为参数无论如何都是按值传递的。
error: function "strcpy" has already been defined
char* strcpy (char* destination, const char* const source)