Стандартные функции библиотеки C strtof и strtod имеют следующие подписи:
float strtof(const char *str, char **endptr);
double strtod(const char *str, char **endptr);
Каждый из них разбивает входную строку str на три части:
- Исходная, возможно, пустая последовательность пробелов
- "последовательность объектов" символов, которые представляют значение с плавающей запятой
- "конечная последовательность" символов, которые не распознаются (и которые не влияют на преобразование).
Если endptr не NULL, тогда *endptr устанавливается на указатель на символ, следующий за последним символом, который был частью преобразования (другими словами, начало трейлинг-последовательности).
Мне интересно: почему endptr, а затем указатель на указатель не const char? Является ли *endptr указателем на строку const char (входная строка str)?