C++ 常量正确性-常量指针作为函数参数
考虑一个函数,如C++ 常量正确性-常量指针作为函数参数,c++,c,C++,C,考虑一个函数,如 char* strcpy (char* destination, const char* source); (address)source的给定值为const,因为函数的作者希望显示strcpy不会更改source的值。strcpy不会将指针本身更改为。为什么不写呢 char* strcpy (char* destination, const char* const source); 非常感谢。指针本身是按值传递的,因此没有意义。也可以这样写,但无论如何都不会影响调用者 在
char* strcpy (char* destination, const char* source);
(address)source的给定值为const,因为函数的作者希望显示strcpy不会更改source的值。strcpy不会将指针本身更改为。为什么不写呢
char* strcpy (char* destination, const char* const source);
非常感谢。指针本身是按值传递的,因此没有意义。也可以这样写,但无论如何都不会影响调用者 在第二种情况下,原型表示不应修改指针本身,但无论如何都不能修改调用方的指针,因为调用函数时会复制(通过值传递)
用
const
标记通过值传递的变量仅对函数的实现者有用,以明确其意图。如果您尝试实现这两个函数,您将看到它们实际上是相同的。此时的const
修饰符仅对函数体有意义,因为参数无论如何都是按值传递的
error: function "strcpy" has already been defined
char* strcpy (char* destination, const char* const source)
如果在将指针传递到目标后将函数体中的source设置为NULL会发生什么情况?用作函数参数的本地副本
source
将设置为NULL
,而不是传递给它的参数。