免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: jsrdcy
打印 上一主题 下一主题

[函数] 关于函数返回double类型的疑问!! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-04-29 20:15 |只看该作者
今天我在调试程序,kk为结构体变量指针
kk->je=xxx(a);
printf('je[%lf]\n",xxx(a));
printf("je[%lf]\n",kk->je);
结果就不一样,然后我同事提醒我是不是应该用指针返回较好一些;
xxx(a,&(kk->je));
printf("je[%lf]\n",kk->je);
结果果然正确,就是不清楚为何,怀疑与调用的函数返回的是临时变量有关,我是在hp unix上运行的!

论坛徽章:
0
12 [报告]
发表于 2007-04-29 20:19 |只看该作者
原帖由 jsrdcy 于 2007-4-29 20:15 发表
今天我在调试程序,kk为结构体变量指针
kk->je=xxx(a);
printf('je[%lf]\n",xxx(a));
printf("je[%lf]\n",kk->je);
结果就不一样,然后我同时提醒我是不是应该用指针返回较好一些;
xxx(a,&(kk->je));
printf("je[%lf]\n",kk->je);
结果果然正确,就是不清楚为何,怀疑与调用的函数返回的是临时变量有关,我是在hp unix上运行的!


似乎使用具体的代码更有说服力。你在 1 楼贴的程序说明不了问题。

.

论坛徽章:
0
13 [报告]
发表于 2007-04-29 20:30 |只看该作者
请再看1楼

论坛徽章:
0
14 [报告]
发表于 2007-04-29 20:40 |只看该作者
我想这个是不是跟编译的工具,环境有关啊,我们是用tuxedo的buildserver 编译的,好像在纯c里面没有这个限制,在C++里面是不是有这种不能返回临时变量的说法啊!我去查书看看,是不是从对象角度啊,哈哈,我乱想的,平时不用C++的

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
15 [报告]
发表于 2007-04-29 20:54 |只看该作者
原帖由 jsrdcy 于 2007-4-29 20:40 发表
我去查书看看,

嗯,真的应该这么做。再顺便查下你的编译环境的文档。

论坛徽章:
0
16 [报告]
发表于 2007-04-29 20:55 |只看该作者
double  dround(double indata,int  len,double *outdata);
{

   double  oo;
    ...........
   //经过转换后的保留精确位的临时变量  oo
   
    *outdata=&oo  ;
    return   oo;
}


这是错误的用法。自动变量的值,在过程退出后,会变得不可知。

.

论坛徽章:
0
17 [报告]
发表于 2007-04-29 21:00 |只看该作者
原帖由 langue 于 2007-4-29 20:55 发表


这是错误的用法。自动变量的值,在过程退出后,会变得不可知。

.


准确说来,所有自动对象都是这样。除非返回的是一个指向全局对象的指针,否则这个指针对于运行时的程序来说没有太大意义。

.

论坛徽章:
0
18 [报告]
发表于 2007-04-29 21:04 |只看该作者
*outdata=&oo  ;

这个赋值语句本身就有问题。大概是笔误吧。

论坛徽章:
0
19 [报告]
发表于 2007-04-29 21:43 |只看该作者
原帖由 jsrdcy 于 2007-4-29 20:40 发表
我想这个是不是跟编译的工具,环境有关啊,我们是用tuxedo的buildserver 编译的,好像在纯c里面没有这个限制,在C++里面是不是有这种不能返回临时变量的说法啊!我去查书看看,是不是从对象角度啊,哈哈,我乱想的 ...


坦白地说,这和 C 还是 C++ 的关系不大。多半是你写的代码不正确,这里的不正确倒不一定是语法错误,还包含那些看似正确但实际并不能得到正确结果的用法。

.

论坛徽章:
0
20 [报告]
发表于 2007-04-29 21:48 |只看该作者
原帖由 jsrdcy 于 2007-4-29 20:07 发表
我指的在某种情况下,用函数返回值的方式,是不是会出错,感觉就aa=xxx(..);这种形式不能给aa赋值,这个跟函数返回的是临时变量有关系吗?


那么请回答,函数的返回值应该如何使用?我觉得你并没有说清楚你的疑惑。试着换一种方式表述你的观点,这很有帮助。

.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP