Стандартные функции библиотеки 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
)?