免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4443 | 回复: 6
打印 上一主题 下一主题

[函数] 请教:return 一个函数的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-26 11:40 |只看该作者 |倒序浏览
我在一个函数返回时return一个函数:

static int func1(char *name);
static int func2();

int func2()
{
      char name[10];
      memset(name, 0, sizeof(name));

      sprintf(name, "%s", "harry");
      ...
      return func1(name);
}


我觉得局部变量name在进入func1前是不是已经被出栈释放了,如果我必须要给func1传参数的话,该怎么做?

论坛徽章:
0
2 [报告]
发表于 2007-10-26 11:46 |只看该作者
我说错了
楼下的正解

[ 本帖最后由 xB1ue 于 2007-10-26 11:57 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-10-26 11:49 |只看该作者
return func1(name);
===============
首先执行的是 func1();
这个时候 name 还没有被释放
当func1(name)执行完毕,返回一个值 v 之后
将执行 return v; 动作

论坛徽章:
0
4 [报告]
发表于 2007-10-26 11:54 |只看该作者

回复 #1 linux_ha 的帖子

你这个跟下面没有多大区别

  1. static int func1(char *name);
  2. static int func2();

  3. int func2()
  4. {
  5.       char name[10];
  6.       memset(name, 0, sizeof(name));

  7.       sprintf(name, "%s", "harry");
  8.       ...
  9.       int tmp = func1(name);
  10.       return tmp;
  11. }
复制代码

论坛徽章:
0
5 [报告]
发表于 2007-10-26 12:41 |只看该作者
恩,是这样,那估计是其他部分出了问题,我在看看!

论坛徽章:
0
6 [报告]
发表于 2007-10-26 15:17 |只看该作者
楼主的标题可不大正确,这可不是返回函数哦。
再说也没有返回函数的概念,返回函数地址倒是有。

论坛徽章:
0
7 [报告]
发表于 2007-10-26 15:22 |只看该作者
return func();

不是返回函数,是调用func返回func()的返回数值。

原帖由 Sorehead 于 2007-10-26 15:17 发表
楼主的标题可不大正确,这可不是返回函数哦。
再说也没有返回函数的概念,返回函数地址倒是有。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP