传址打印问题
大神帮我解答为什么打印不出字串符的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;
} 好吧,这个应该是0-29 循环条件<30 BngThea 发表于 2017-12-28 07:57
循环条件<30
这个小事,主要是打印出都是X 本帖最后由 BngThea 于 2017-12-28 11:44 编辑
18123988006 发表于 2017-12-28 11:09
这个小事,主要是打印出都是X
我明白了,因为你的数组na是在函数里面定义的,当函数调用完以后栈空间被释放,此时返回的只是第一个字符的地址信息了,而这个地址也不再存放原来的值,而是一个随机的字符,所以在主函数中才打印出随机的值
页:
[1]