std::strtol的签字方式如下:
long strtol(const char *str, char **str_end, int base);
实际上,我希望第二个参数是const char**类型的。对于为什么它是char**类型的,有什么解释吗?注意,可以修改const char**类型的变量。您不能修改的是一个char* const *变量。
发布于 2015-12-17 06:58:58
在过去(C90之前),C没有const的概念,一切都使用普通的char*。
由于char*可以隐式转换为char const*,因此更改大多数库函数的签名以支持const并不是什么大问题。然而,char**不能转换为char const**,请参阅C++标准中的以下说明以了解原因

由于C不支持重载,委员会不得不在破坏遗留代码和强制每个人传递char**之间做出选择。这两种方法都不是理想的,但看起来它们都和后者一样。
https://stackoverflow.com/questions/34328046
复制相似问题