c语言如何定义一个函数可以返回多个值回去给主函数呀。

这个函数怎么样才能把后面求得的数返回去给主函数呢

函数的返回值顶多是一个数,通过函数直接返回的这个数只有在是指针时才能给出多个数据结果。

可以考虑以下几个方法:

    返回指针:

    int* display() { int *p; p=malloc(sizeof(int)*6); ... return p; } //用p[0]~p[5]计算各位

    void main() { int *p; p=display(); ... free(p); }

    使用全局变量:将shiwa,wa,qiao,bai,shi,ge定义成全局变量,然后子程序和主程序直接用

    使用函数参数:

    void display(int* shiwa,int* wa,int* qiao,int* bai,int* shi,int ge)

    函数中用类似这样的用法计算:(*ge)=Data%10;

    void main() { int shiwa,wa,qiao,bai,shi,ge; display(&shiwa,&wa,&qiao,&bai,&shi,&ge) }

    用一个足够长的数返回:

    long display() { long n; ... n=shiwa; n*=10; n+=wa; n*=10; n+=qiao; n*=10; n+=bai; n*=10; n+=shi; n*=10; n+=ge; return n; }

    void main() { int wa; long n; n=display(); wa=n/10000; wa%=10; }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-21

你好:

C不支持一个函数直接reture多个值。

但是我有个建议你参考下:

    你把得到的Data返回,在返回的主函数里再分解处理。

    直接把shiwa、wa、qiao、bai、shi、ge这些变量定义为全局函数,这样在函数体里处理赋值了这些变量,在其他地方都可以使用,而不需要返回。

希望我的回答能帮助到你。

第2个回答  2013-08-21

用结构体返回会导致程序结构复杂化,并且由于结构体非指针传送的时候需要复制开销也较大

定义过多全局函数会导致程序DEBUG变得异常困难


最好的做法就是Pledge_Peace君的方法“这种情况下使用地址传递比较好。直接改变主函数的值。而且你这个函数写的也不需要返回值,函数前价格void 就行了。”

比如:

void func(int *a, int *b)
{
    *a = 123;
    *b = 321;
}

调用的话直接func(&ia, &ib)或者本来就是指针就直接传

第3个回答  2013-08-22
c子函数返回一个数这个是规定,没有办法改变
也就是return只能返回一个数值

但是这个可以迂回
指针或者数组。说白了就是一个指针(数组的首地址是个指针)
参数用&也可
全局变量也行

但是原理就是子函数来改变主函数中的数据
也就是在子函数生命周期到了后,变量不会跟着释放掉即可
第4个回答  2013-08-22
uchar display(float或int *shiwa,float或int *wa,float或int *qiao....)
把要返回的数据通过函数传递进来的指针返回出去(实际上是函数修改了指针指向的地址的数值,因此即使函数返回,指针指向的数据还是在的)
引用的时候记得要用指针形式
main()
{
int shiwa,wa,qiao;
display(&shiwa,&wa,&qiao);
}
uchar display(int *shiwa,int *wa,int *qiao)
{
shiwa=1;
wa=2;
qiao=3;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网