LinuxSir.cn,穿越时空的Linuxsir!

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

如何实现多个函数返回值?

[复制链接]
发表于 2004-12-19 10:37:23 | 显示全部楼层 |阅读模式
在c里面函数只能有一个返回值,如果要返回多个指,要怎么办?
下面是我写的一个出队列的函数,这样的函数必须返回输出的值,但是也要返回队列的头指针和尾指针(否则无法修改队列)?到底怎么办啊?谢谢个位!!
CODE
  #include<stdio.h>

typedef struct QNode
{  float data;
   struct QNode *next;
}QNode,*QueuePtr;

typedef struct
{
    QueuePtr front;/*队伍头指针*/
    QueuePtr rear;/*队伍尾指针*/
}LinkQueue;

  LinkQueue  DeQueue(LinkQueue Q)/*删除队列头*/
{ float e;
QueuePtr p;
if(Q.front==Q.rear)  printf("ERROR:The Queue is Empty!\n");
  p=Q.front;
  e=p->data;
  printf("delet test:%f\n",e);/*Q.font->data是没有数据的*/
  p=p->next;
  free(Q.front);
  Q.front=p;


return (Q);
}

QueueOut(LinkQueue Q)/*输出队列的值*/
{ QueuePtr temp;
  temp=Q.front;

  if(Q.front->next==NULL)
    {printf("ERROR:The Queue is Empty!\n");
     return;}
while(temp!=NULL)
    {printf("temp->data%f\n",temp->data);
     temp=temp->next;
     
     }
}
/CODE
发表于 2004-12-19 10:59:09 | 显示全部楼层
C语言只能返回一个值。可以用传递参数的形式返回多个值。
发表于 2004-12-19 13:17:31 | 显示全部楼层
定义几个全局变量,让他们返回行不?
发表于 2004-12-19 14:03:32 | 显示全部楼层
方法1:传入引用或者指针,在函数中修改
方法2:返回一个struct
 楼主| 发表于 2004-12-19 14:34:13 | 显示全部楼层
kj501斑斑,传递参数的方法如何实现,能说的详细点么?

用struct,到底如何实现?定义一个struct,这个struct包括所有要返回的参数?
发表于 2004-12-19 14:37:23 | 显示全部楼层
建议打好c的基础
传递参数的方法任何一本教科书上都有详细介绍
 楼主| 发表于 2004-12-19 14:50:55 | 显示全部楼层

谢谢suowei1979师兄的建议,
我找了一下,没有找到这方面的说明,也有可能是有些地方没看明白
发表于 2004-12-19 15:08:55 | 显示全部楼层
Post by dale0110
kj501斑斑,传递参数的方法如何实现,能说的详细点么?

用struct,到底如何实现?定义一个struct,这个struct包括所有要返回的参数?

比如说要传递3个参数到某个函数赋值,可以采用指针的形式:

  1. #include <stdio.h>

  2. int assign(int *a1, int *a2, int *a3)
  3. {
  4.     *a1=3;
  5.     *a2=4;
  6.     *a3=5;
  7. }

  8. int main()
  9. {
  10.     int a, b, c;
  11.     assign(&a, &b, &c);
  12.     printf("%d, %d, %d\n", a,b,c);
  13. }
复制代码
 楼主| 发表于 2004-12-19 15:21:43 | 显示全部楼层
但是我要函数返回多个值,比如刚才那个出队列函数,要返回队列的头指针和尾指针,还有出队列的元素,
定义了一个struct

  1. typedef struct
  2. {
  3.     QueuePtr front;/*队伍头指针*/
  4.     QueuePtr rear;/*队伍尾指针*/
  5. }LinkQueue;
复制代码

  struct包括队列的头指针和尾指针,返回这样一个struct可以修改队列头指针和尾指针,但是无法返回出队列的元素,如果返回出队列的元素,又无法返回struct修改队列
发表于 2004-12-20 11:05:57 | 显示全部楼层
用struct怎么布可以返回队列的元素呢?用指针分量不也可以访问队列的啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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