免费注册 查看新帖 |

Chinaunix

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

请教各位高手一个返回值的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-21 16:18 |只看该作者 |倒序浏览
我想在程序中接收通过poen函数处理的返回值。

我在popen中调用的是一个已编译的程序。这个程序的返回值是一个结构体类型的数据。

我的问题就是通过什么方法来接收这个结构体类型的数据。

论坛徽章:
0
2 [报告]
发表于 2004-07-21 16:37 |只看该作者

请教各位高手一个返回值的问题

我在popen中调用的是一个已编译的程序。这个程序的返回值是一个结构体类型的数据。


恕我孤陋寡闻,popen 只能调用可执行程序或SHELL。可执行程序或SHELL唯一能返回只能是个数值,不知道还能返回一个结构体类型。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2004-07-21 16:37 |只看该作者

请教各位高手一个返回值的问题

调用一个已编译的程序?程序返回结构体类型?

呵呵,都不知道怎么做的。

应该也可以像函数一样吧。用指针?不清楚,猜的。

论坛徽章:
0
4 [报告]
发表于 2004-07-21 16:56 |只看该作者

请教各位高手一个返回值的问题

任何可执行程序的返回值都是一个整数,不可能返回结构指针,即时返回了指针,其所指向的地址别人也是不可用的。
走火入魔了……

论坛徽章:
0
5 [报告]
发表于 2004-07-21 18:52 |只看该作者

请教各位高手一个返回值的问题

不要紧,不让返回结构,我们返回文件。

论坛徽章:
0
6 [报告]
发表于 2004-07-22 07:42 |只看该作者

请教各位高手一个返回值的问题

还是别误导了,是什么就是什么。

论坛徽章:
0
7 [报告]
发表于 2004-07-22 11:43 |只看该作者

请教各位高手一个返回值的问题

它既然返回的是一个数据结构, 你就按照这个数据结构进行分析它的返回值不就行了吗?我也是猜的,没这样做过.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2004-07-22 12:15 |只看该作者

请教各位高手一个返回值的问题

只能返回值!

论坛徽章:
0
9 [报告]
发表于 2004-07-23 19:47 |只看该作者

请教各位高手一个返回值的问题

可以返回一个指针,但需要注意的是指针不能指向函数的中间局部变量,也不能是在函数内初始化的对象,应为函数在返回的过程中已经销毁这个变量了.

在<<c++ primer>;>;说的

Matrix *res;
// 在动态存储中分配一个更大的Matrix
// res 是指向新Matrix 的指针
// 将*p 内容复制到*res
return *res;
如果返回值是一个大型类对象用引用或指针返回类型比按值返回类对象效率要高
得多在某些情况下编译器自动将按值返回转换到按引用返回该优化被称为命名返回值
优化named return value optimization 将在14.8 节中描述
当声明一个返回引用的函数时程序员应当知道下面两个易犯的错误
1 返回一个指向局部对象的引用局部对象的生命期随函数的结束而结束局部对象的
生命期将在8.3 节讨论在函数结束后该引用变成未定义内存的别名例如
  1. // 问题: 返回一个指向局部对象的引用

  2. Matrix& add( Matrix &m1, Matrix &m2 )
  3. {
  4. Matrix result;
  5. if ( m1.isZero() )
  6. return m2;
  7. if ( m2.isZero() )
  8. return m1;
  9. // 将两个Matrix 对象的内容相加
  10. // 喔! 返回之后结果指向一个有问题的位置
  11. return result;
  12. }
  13. 在这种情况下返回类型应该被声明为非引用类型然后再在局部对象的生命期结束之
  14. 前拷贝局部变量
  15. Matrix add( ...
  16. }[
复制代码

论坛徽章:
0
10 [报告]
发表于 2004-07-23 22:51 |只看该作者

请教各位高手一个返回值的问题

popen开一个子shell,通过一个文件流读取子进程的标准输出.
只能在子进程中通过用fwrite传输回来.
不能用返回值.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP