CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

子程序返回值的问题

楼主wujievc(小小)2003-02-02 15:51:31 在 C/C++ / C语言 提问

各位好!  
  请问C/C++中子程序的返回值的个数有限制吗?如何才能实现一个子程序返回多个不同类型的值呢?(数组,指针型返回值除外)。 问题点数:20、回复次数:11Top

1 楼danceflash(Wine)回复于 2003-02-02 15:55:36 得分 0

在参数列表中使用指针(C/C++)或者引用型(C++)参数,可以达到多个返回值的目的Top

2 楼DaNiao(鸿雁)回复于 2003-02-02 15:59:09 得分 15

严格的讲只能返回一个,或者不返回,但聪明的你肯定是不甘心这样的  
  所以你有几种选择:  
  1.返回一个结构:  
  class   AResult  
  {public:  
        int   a;  
        float   b;  
        bool   c;  
  };  
   
  AResult   A()  
  {  
      ...  
  }  
  2.用指针或引用从接口带出  
  void   f(int   &a);   //void   ?  
  {  
        a++;  
  }  
   
  int   main()  
  {  
      int   a;  
      f(a);  
  }  
  3.直接操作全局变量,或类的成员变量  
  class   A  
  {  
      public:  
          void   a();  
          void   b();  
      private:  
          int   x;  
  }  
   
  void   A::a()  
  {  
        x   =   0;  
        b();  
        cout<<x;  
  }  
   
  void   A::b()  
  {  
      x++;  
  }Top

3 楼sttony(冥界来客)回复于 2003-02-02 16:09:36 得分 5

一般采用   HRESULT     youFun(   type   *ParIn,   type   *ParOut)Top

4 楼snowman_pc(cpp)回复于 2003-02-02 16:10:04 得分 0

C/C++中函数只返回一个值,  
   
   
  也就是说函数的参数采用值传递,但你可以通过采用指针地址做为参数,产生地址传递,这样既可产生多值!  
   
   
  void   example(int   *a,char   *b);  
   
  main()  
  {  
      int   dd=1;      
      int   *num=dd;  
      char   *ch="abcd";      
       
      example(num,ch);  
      printf("%d,%s",*num,ch);  
  }  
   
  void   example(int   *a,char   *b)  
  {  
      *a=30;  
      b="34567";  
  }  
   
   
  这个是例子,我没有编译,有错误之外,请见谅,   大概就是这个意思Top

5 楼wujievc(小小)回复于 2003-02-02 16:16:33 得分 0

to   DaNiao:  
  Good   idea!Thank   you   all   the   same!Top

6 楼wujievc(小小)回复于 2003-02-02 16:25:17 得分 0

多谢大家见教!  
  小小这个帖子的困惑在于C/C++中是否只有通过地址传递的方法才能处理多个参数传递的问题。假如程序中要传递的参数的地址不连贯呢?或者要传递的参数的类型各不相同呢?  
  请大家继续发言。Top

7 楼fastzch(红领巾)回复于 2003-02-02 16:35:28 得分 0

一般来说,如果用一个数组加指针的方法来存储返回值是不会出现不连续存放的现象的,不过即便是不连续也是有办法解决的!当然要传递参数的类型不相同,最好是用指针的方法或者是引用的方法。Top

8 楼wujievc(小小)回复于 2003-02-02 16:35:47 得分 0

to   sttony:  
  可以给个示例吗?Top

9 楼Frank001(Frank)回复于 2003-02-02 16:36:16 得分 0

结构型也可以啊,楼上有一位已经说了,把你需要传递的各个参数设计成一个结构型的。Top

10 楼wujievc(小小)回复于 2003-02-02 16:41:32 得分 0

有点明白了,看来小小有点钻牛角尖了,多谢各位!Top

11 楼sttony(冥界来客)回复于 2003-02-04 13:50:10 得分 0

可以参考,   DX   SDK   其中的函数的原型Top

相关问题

  • 我定义了一个子程序如何把子程序返回的信息给一个变量
  • 如何使子程序返回一个表
  • 子程序问题
  • 子程序问题
  • 求例子程序
  • 如何在函数中随时跳出并且返回原调用子程序中?
  • 我死定了,请大家帮忙,对子程序的调用中传值好像不对
  • 什么叫钩子程序
  • 关于com例子程序?
  • 关于com例子程序 ?

关键词

  • c/c++
  • 指针
  • 子程序
  • 返回
  • 值

得分解答快速导航

  • 帖主:wujievc
  • DaNiao
  • sttony

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo