签名的std::strtol
表述如下:
long strtol(const char *str, char **str_end, int base);
我实际上期望第二个参数是类型const char**
.是char**
什么类型的解释?请注意,可以修改类型的变量const char**
.你无法修改的是一个char* const *
变量.
在昔日的日子里(在C90之前),C没有概念,const
一切都使用平淡char*
.
由于char*
可以隐式转换为char const*
更改大多数库函数的签名以支持const
不是太大的问题.char**
但是无法转换为a char const**
,请参阅C++标准中的以下注释
由于C不支持重载,委员会不得不在破坏遗留代码或强迫每个人传入代码之间做出选择char**
.两者都不理想,但看起来他们跟后者一样.