LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 839|回复: 6

函数定义问题

[复制链接]
发表于 2003-9-12 09:43:27 | 显示全部楼层 |阅读模式
本人想定义一个函数返回一个字符串
如:char *function(...)
{
char buf[1024];
...
return buf;
}
main()
{
char *p;
p = function;
return;
}

这样执行function函数后buf会被释放,肯定会丢失
数据
请问怎样定义function才能较好的保存所需的数值。
我知道的方法有在main中strcpy(buf2,function());
还有在function中定义buf为static。还有就是在function中传递一个buf参数。

而我想要的是不在function中定义static buf;并且不传递buf参数,同时还返回所需的字符串,有什么更好的方法吗?这几种方法那个好。
发表于 2003-9-12 12:09:28 | 显示全部楼层
使用malloc在里面分配内存
发表于 2003-9-12 12:10:15 | 显示全部楼层
空间不会是你想让他有就有的
要你提供的

看看有几种提供空间的方法就有几个方法
 楼主| 发表于 2003-9-16 15:25:59 | 显示全部楼层
最初由 无双 发表
使用malloc在里面分配内存

在子函数中分配空间,子函数执行完毕不释放空间吗?
发表于 2003-9-16 15:34:37 | 显示全部楼层
不会
我觉得学习C应该理解在系统中内存模型

系统中每个进程有
数据区
STACK

STACK中申请的空间是函数退出后释放的
堆中分配的空间是一直保存到进程结束的
发表于 2003-9-16 16:39:20 | 显示全部楼层
个人认为strcpy(buf2,function());还是比较好的,只要你预先知道buf2的容量,即不能char *buf2.
其实干脆在main.c里:
char buf[1024];
function(buf);
总不会丢失了。
发表于 2003-9-16 17:05:49 | 显示全部楼层
内存分配还要看你是需要静态存储还是动态存储。
搞清楚它的生存期。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表