以下是C标准库例程strtol
的原型:
long int strtol(const char* str, char** endptr, int base);
典型用法:
const char* str = "123a";
char* endptr;
long int value = strtol(str, &endptr, 10);
if (*endptr)
// Do something
else
// Do something else
为什么这样做?为什么不传递局部变量的地址?
示例:
long int strtol(const char* str, char* endptr, int base);
用法:
const char* str = "123a";
char end;
long int value = strtol(str, &end, 10);
if (end)
// Do something
else
// Do something else
我确信这个设计决定有合理的理由,但我不太明白。
答案 0 :(得分:2)
它使用指向第二个参数的指针,因为它允许调用者知道解析已经停止的字符串中的确切位置 - 并且可以用于继续使用其他方法解析流。此外,它允许通过提供NULL
来完全忽略它。
请注意,您提出的架构不具备这些有用的属性。