首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问关于atoi()函数

2012-02-19 
请教关于atoi()函数#includestdio.hchar*test(void){charxyz[10]10 returnxyz}intmain(){unsigneds

请教关于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 "; 定义在栈中 函数返回后自动释放

热点排行