C语言中strchr的定义如下
char * strchr(const char *s, int c);
此声明向用户保证 strchr 不会修改“s”的内容(除非代码使用显式类型转换)。
从网上收集到的问题是,这个定义在返回指针时会强制转换“const”属性,因此在“C++”中,这不是“const 正确的”。
C++中的解决方案似乎是重载函数
const char * strchr ( const char * str, int character );
char * strchr ( char * str, int character );
虽然这是“const safe”,但我无法理解第二个声明如何 char * strchr(char * str,int 字符) 向调用者保证不会修改其参数。
最佳答案
它没有做出这样的 promise 。恰恰相反,它为调用者提供了一种通过返回的指针修改字符串的方法。这就是为什么这个版本只能用非常量指针调用。
关于c++ - C++中的strchr如何保证其调用者不会修改作为参数传递的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31191686/