完整分析建议看剑指Offer第一章第一个案例,分析的非常好,非常周到。
#include
#include
#include
#include
int my_atoi(const char* str)
{
assert(str);
size_t len = strlen(str);
size_t j = len - 1;
// 个位(1234中的4)
int ret = str[j--] - '0';
// 十位百位千位...相加(比如1234中的3与10相乘得到30,2与100相乘得到200)
for (int i = 10; i < pow(10, len); i *= 10)
{
ret += (str[j--] - '0') * i;
}
return ret;
}
int main()
{
char str[10] = "1234";
printf("%d\n", my_atoi(str));
return 0;
}
核心:

