读书人

请问关于atoi()函数

发布时间: 2012-02-19 19:43:38 作者: rapoo

请教关于atoi()函数
#include <stdio.h>

char * test(void)
{
char xyz[10] = "10 ";
return xyz;
}

int main()
{
unsigned short a;
unsigned short b;

a = atoi(test());
printf( "%d\n ", a);

b = atoi( "10 ");
printf( "%d ", b);

getchar();
return 0;
}
为什么结果一个是0,一个是10呢?
谢谢

[解决办法]
test函数中xyz是一个局部变量,因此他保存的内容将在test函数返回后被系统收回,而系统收回该地址后未必会立刻进行其他用途或者将之清零,因此产生了你的运行结果偶尔出现正确的情况。
但是程序中一定要避免这样的问题,因为这样返回得到的结果其值是不确定的。
[解决办法]
char xyz[10] = "10 "; 定义在栈中 函数返回后自动释放

读书人网 >C语言

热点推荐