注册 登录
编程论坛 C图形专区

用函数如果返回一个字符串

beyondabcd 发布于 2007-08-30 09:05, 1016 次点击

#include "stdio.h"
scopy ()
{
char str2[]="form str2,to strl";
return str2;
}

main()
{ char *t;
t=scopy();
printf("%s",t);
getch();
}
我这个为什么不行呀?

4 回复
#2
neverTheSame2007-09-07 23:41
scopy ()
{
char str2[]="form str2,to strl";
return str2;
}
改成:
char* scopy ()
{
char *str2="form str2,to strl";
return str2;
}
就可以.到现在,我也不太明白被数组不行.
#3
wangxy2006962007-09-11 04:02
我看了一小时,头都痛了,这个是printf函数的漏洞,里面好像涉及堆栈溢出问题,在主函数里面调用了一个用char a[]和char *a定义的数组的过程是不一样的
#4
一笔苍穹2007-09-11 08:53
char str2[]="form str2,to strl";
这是数组并初始化。str2[]在一个函数中,属于局部变量,函数一返回其值无效,自然就不能使用。
r *str2="form str2,to strl";
这是指针并初始化其指向一个字符串常量,常量存储在程序的.DATA段中,程序运行期间总是存在,因为函数可以返回并继续使用指向它的指针。

与printf无关
#5
wangxy2006962007-09-11 17:14
呵呵,版主分析的确实对.不过我在想t等于str2;str2指向的字符数组在过程消失后的内容变的真快
1