Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 常量正确性-常量指针作为函数参数_C++_C - Fatal编程技术网

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
,而不是传递给它的参数。