std::strtol
の署名は次のように定式化されるが、以下:私は実際には2番目のパラメータはタイプconst char**
であることを期待署名:: strtolは
long strtol(const char *str, char **str_end, int base);
。代わりにchar**
のタイプの理由についての説明はありますか?タイプconst char**
の変数を変更することができます。変更できないものはchar* const *
です。
std::strtol
の署名は次のように定式化されるが、以下:私は実際には2番目のパラメータはタイプconst char**
であることを期待署名:: strtolは
long strtol(const char *str, char **str_end, int base);
。代わりにchar**
のタイプの理由についての説明はありますか?タイプconst char**
の変数を変更することができます。変更できないものはchar* const *
です。
この関数は、 'str_end'ポインタを変更します。そのため、' char ** 'でなければなりません。 – ForceBru
おそらくそれは関数がCで宣言され、C++が互換性を持たせたいからです。 C言語で宣言された理由は、おそらく古いコードとの下位互換性のためです。正確な理由から、あなたは標準委員会に尋ねなければなりません。 –
@ JoachimPileborg:最初のパラメータが 'const'なのであまり意味がありません。 –