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

这个函数怎么样才能把后面求得的数返回去给主函数呢... 这个函数怎么样才能把后面求得的数返回去给主函数呢 展开
 我来答
cdyzxy
推荐于2017-12-15 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3735万
展开全部

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

可以考虑以下几个方法:

  1. 返回指针:

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

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

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

  3. 使用函数参数:

    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) }

  4. 用一个足够长的数返回:

    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; }

Cindere鞡
2013-08-21 · TA获得超过7254个赞
知道大有可为答主
回答量:1148
采纳率:84%
帮助的人:515万
展开全部

你好:

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

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

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

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

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
IronPike
2013-08-21 · 超过11用户采纳过TA的回答
知道答主
回答量:19
采纳率:0%
帮助的人:28.3万
展开全部

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

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


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

比如:

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

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cpucash
2013-08-22 · TA获得超过1584个赞
知道小有建树答主
回答量:1457
采纳率:66%
帮助的人:969万
展开全部
c子函数返回一个数这个是规定,没有办法改变
也就是return只能返回一个数值

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

但是原理就是子函数来改变主函数中的数据
也就是在子函数生命周期到了后,变量不会跟着释放掉即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
从前有只小冷兔
2013-08-22 · TA获得超过161个赞
知道小有建树答主
回答量:100
采纳率:0%
帮助的人:92.9万
展开全部
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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式