C函数返回值较多如何处理?

[复制链接]
3909|13
 楼主| happyahead 发表于 2007-9-26 17:01 | 显示全部楼层 |阅读模式
一个子函数需要使用三个返回值,使用return(...),只能返回一个值;
怎样处理哪.......?
高勇 发表于 2007-9-26 17:11 | 显示全部楼层

返回值

把需要返回的值定义为全局变量。
把需要返回的值放到数组里,返回组数的的头一个变量。或返回数组的指针。
古道热肠 发表于 2007-9-26 17:12 | 显示全部楼层

用指针呀

  通过指针,可以将修改后的数据返回给主调函数,也可以通过全局变量来实现,但这种方法不推荐。
sos_admin 发表于 2007-9-26 17:13 | 显示全部楼层

用指针,最好用结构体指针

 楼主| happyahead 发表于 2007-9-26 17:52 | 显示全部楼层

谢谢各位,我用的是指针

用的是指针,但是感觉挺麻烦的,老是觉得自己这种方法很笨
main()
{
 uchar data *bai_zz;//定义存储器专用指针变量 
 uchar data *shi_zz;
 uchar data *ge_zz;
 uchar bai,shi,ge;//用于显示的BCD码
 
 bai_zz=&bai;
 shi_zz=&shi;
 ge_zz=≥
 char_bcd(wendu2,bai_zz,shi_zz,ge_zz);
}

void char_bcd(uchar char1 ,uchar *bai_zz1,uchar *shi_zz1,uchar *ge_zz1)
{
 uchar bai1,shi1,ge1;
 bai1=char1/100;
 shi1=B/10;
 ge1=B;
 *bai_zz1=bai1;
 *shi_zz1=shi1;
 *ge_zz1=ge1;
}
平常人 发表于 2007-9-26 18:32 | 显示全部楼层

在调用部分定义一个结构体,再把它的指针传给被调用的函

在被调用的函数中对这个结构体赋值即可。

C语言中的函数只能返回一个数,不管是字符型的还是浮点型的。
zhiwei 发表于 2007-9-26 19:20 | 显示全部楼层

用结构体指针

返回任意多个数据都可以,避免使用全局变量。
huangqi412 发表于 2007-9-26 19:54 | 显示全部楼层

用指针比全局变量好

Swd21ic 发表于 2007-9-26 20:01 | 显示全部楼层

~~~

 额..
..定义一个数组 uchar data[3].

函数直接传递这个数组的指针 char_bcd(uchar char1,uchar *p)

然后把个十百位计算好往里面放.

这个函数执行完后,这个数组里就是你所需要的东西了..
hotpover 发表于 2007-9-26 22:40 | 显示全部楼层
ayb_ice 发表于 2007-9-27 07:33 | 显示全部楼层

指针...

lenglx 发表于 2007-9-27 12:12 | 显示全部楼层

用指针是可以的,

结构也是可以的;
直接返回一个结构体也是可以的.

typedef struct
{
  int x;
  int y;
  int z;
}XX;

XX foo(...)
{
  XX xx;
  //...
  return xx;
}

这样做的话,某些情况下,会使程序的可读性比较好.
比如:你可以这么使用foo()函数:

if(foo().x == 0)
{
 // do something
}

当然,因为这里的返回值不应当作为左值应用,所以严格点的写法应当是:
const XX foo(...)
{
  XX xx;
  //...
  return xx;
}





ayb_ice 发表于 2007-9-27 16:44 | 显示全部楼层

随便说说

void main(void)
{
    unsigned char rtn[8];    // 返回多少都可以
    
    test_return(rtn);
    if(pi[0] == xx){
        ...
    }
}

void test_return(unsigned char* pi)
{
    ...
    pi[0] = xx;
    pi[1] = xx;
    pi[2] = xx;
    pi[3] = xx;
    pi[4] = xx;
    pi[5] = xx;
    pi[7] = xx;
    ...
}
 楼主| happyahead 发表于 2007-9-28 10:51 | 显示全部楼层

传递的是一个指针变量,但是

谢谢各位,基本已解决,但还是有一点不明白............

传递的是一个指针变量,但是在被调函数中却可以用数组表示,也就是默认为这个指针就是数组的首地址;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

31

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部