打印

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

[复制链接]
2977|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
happyahead|  楼主 | 2007-9-26 17:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
高勇| | 2007-9-26 17:11 | 只看该作者

返回值

把需要返回的值定义为全局变量。
把需要返回的值放到数组里,返回组数的的头一个变量。或返回数组的指针。

使用特权

评论回复
板凳
古道热肠| | 2007-9-26 17:12 | 只看该作者

用指针呀

  通过指针,可以将修改后的数据返回给主调函数,也可以通过全局变量来实现,但这种方法不推荐。

使用特权

评论回复
地板
sos_admin| | 2007-9-26 17:13 | 只看该作者

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

使用特权

评论回复
5
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;
}

使用特权

评论回复
6
平常人| | 2007-9-26 18:32 | 只看该作者

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

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

C语言中的函数只能返回一个数,不管是字符型的还是浮点型的。

使用特权

评论回复
7
zhiwei| | 2007-9-26 19:20 | 只看该作者

用结构体指针

返回任意多个数据都可以,避免使用全局变量。

使用特权

评论回复
8
huangqi412| | 2007-9-26 19:54 | 只看该作者

用指针比全局变量好

使用特权

评论回复
9
Swd21ic| | 2007-9-26 20:01 | 只看该作者

~~~

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

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

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

这个函数执行完后,这个数组里就是你所需要的东西了..

使用特权

评论回复
10
hotpover| | 2007-9-26 22:40 | 只看该作者

re

使用特权

评论回复
11
ayb_ice| | 2007-9-27 07:33 | 只看该作者

指针...

使用特权

评论回复
12
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;
}





使用特权

评论回复
13
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;
    ...
}

使用特权

评论回复
14
happyahead|  楼主 | 2007-9-28 10:51 | 只看该作者

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

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

传递的是一个指针变量,但是在被调函数中却可以用数组表示,也就是默认为这个指针就是数组的首地址;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

31

帖子

1

粉丝