gpt4 book ai didi

c++ - 为什么不在 cstring.h 中的 strcmp 处使用常量指针

转载 作者:太空狗 更新时间:2023-10-29 23:40:15 24 4
gpt4 key购买 nike

在cstring.h文件中存在一个函数:

int strcmp ( const char *s1, const char *s2 ),但是为什么只有数据是常量,让指针和数据都保持常量不是更安全吗。在我看来正确的函数版本应该是这样的:

int strcmp ( const char * const s1, const char * const s2 )

最佳答案

参数的顶级 const 修饰符从声明中删除,因为它们与客户端无关。参数是否改变是一个实现细节。将函数声明为 void f(int x) 然后再将其定义为 void f(const int x) 是完全有效的(反之亦然)。

在你的例子中,即使在 strcmp 中修改了 s1s2,客户端也不会注意到这些修改,因为指针是按值传递(复制到函数中)。也就是说,如果您调用 strcmp(a, b),那么 ab 将保留它们的值,即使 str1str2 已更改。

关于c++ - 为什么不在 cstring.h 中的 strcmp 处使用常量指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22713588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com