学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
轻松建立自己的群组,招兵买马   
发新话题
打印

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

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

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

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

TOP

scopy ()
{
char str2[]="form str2,to strl";
return str2;
}
改成:
char* scopy ()
{
char *str2="form str2,to strl";
return str2;
}
就可以.到现在,我也不太明白被数组不行.
应广大C语言学习者的强烈要求,为了让更多的人能够使用上<<C语言库函数查询器>> 。产品的价格调整为20元人民币,欢迎广大C语言学习来购买。联系QQ:475818502,E-mail:zhaoxufeng9997@126.com,也可留言.

TOP

我看了一小时,头都痛了,这个是printf函数的漏洞,里面好像涉及堆栈溢出问题,在主函数里面调用了一个用char a[]和char *a定义的数组的过程是不一样的

TOP

char str2[]="form str2,to strl";
这是数组并初始化。str2[]在一个函数中,属于局部变量,函数一返回其值无效,自然就不能使用。
r *str2="form str2,to strl";
这是指针并初始化其指向一个字符串常量,常量存储在程序的.DATA段中,程序运行期间总是存在,因为函数可以返回并继续使用指向它的指针。

与printf无关

TOP

呵呵,版主分析的确实对.不过我在想t等于str2;str2指向的字符数组在过程消失后的内容变的真快

TOP

发新话题