18123988006 发表于 2017-12-27 22:56:31

传址打印问题

大神帮我解答为什么打印不出字串符的1到30

#include <stdio.h>
char *dump_name()
{
        char na, *p;
        static int i = 0;
        if( i <= 9 )
        {
                na = 48+i;
                na = '\0';
        }
        else if( i <= 99 )
        {
                na = 48+i/10;
                na = 48+i%10;
                na = '\0';
        }
        i++;
        p = na;
        return p;
}
int main()
{
        char *p;
        int i = 0;
       
        do{
                p = dump_name();
                printf("%s\n",p);
                i++;
        }while( i < 30 );
       
        return 0;
}

18123988006 发表于 2017-12-27 23:03:41

好吧,这个应该是0-29

BngThea 发表于 2017-12-28 07:57:49

循环条件<30

18123988006 发表于 2017-12-28 11:09:01

BngThea 发表于 2017-12-28 07:57
循环条件<30

这个小事,主要是打印出都是X

BngThea 发表于 2017-12-28 11:22:53

本帖最后由 BngThea 于 2017-12-28 11:44 编辑

18123988006 发表于 2017-12-28 11:09
这个小事,主要是打印出都是X

我明白了,因为你的数组na是在函数里面定义的,当函数调用完以后栈空间被释放,此时返回的只是第一个字符的地址信息了,而这个地址也不再存放原来的值,而是一个随机的字符,所以在主函数中才打印出随机的值
页: [1]
查看完整版本: 传址打印问题