CPP atoi 函数
越界问题
输入代码:
#include<stdio.h>
int main()
{
char a = '7';
char b = '2';
printf("a=%d, b=%d\n", atoi(&a), atoi(&b));
printf("a=%p, b=%p\n", &a, &b);
return 0;
}
输出结果:
a=7,b=27
a=0x7fff85cd714f,b=0x7fff85cd714e
结果分析:
观察地址发现,atoi()
在转换 b 时第一个字符为 2,第二个字符为 7,所以 atoi(&b)
输出结果 27,所以在实际使用中如果不能确定内存数据排列情况使用 atoi()
可能会有问题。