函数的返回值顶多是一个数,通过函数直接返回的这个数只有在是指针时才能给出多个数据结果。
可以考虑以下几个方法:
返回指针:
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; }
你好:
C不支持一个函数直接reture多个值。
但是我有个建议你参考下:
你把得到的Data返回,在返回的主函数里再分解处理。
直接把shiwa、wa、qiao、bai、shi、ge这些变量定义为全局函数,这样在函数体里处理赋值了这些变量,在其他地方都可以使用,而不需要返回。
希望我的回答能帮助到你。
用结构体返回会导致程序结构复杂化,并且由于结构体非指针传送的时候需要复制开销也较大
定义过多全局函数会导致程序DEBUG变得异常困难
最好的做法就是Pledge_Peace君的方法“这种情况下使用地址传递比较好。直接改变主函数的值。而且你这个函数写的也不需要返回值,函数前价格void 就行了。”
比如:
void func(int *a, int *b)
{
*a = 123;
*b = 321;
}
调用的话直接func(&ia, &ib)或者本来就是指针就直接传
也就是return只能返回一个数值
但是这个可以迂回
指针或者数组。说白了就是一个指针(数组的首地址是个指针)
参数用&也可
全局变量也行
但是原理就是子函数来改变主函数中的数据
也就是在子函数生命周期到了后,变量不会跟着释放掉即可
把要返回的数据通过函数传递进来的指针返回出去(实际上是函数修改了指针指向的地址的数值,因此即使函数返回,指针指向的数据还是在的)
引用的时候记得要用指针形式
main()
{
int shiwa,wa,qiao;
display(&shiwa,&wa,&qiao);
}
uchar display(int *shiwa,int *wa,int *qiao)
{
shiwa=1;
wa=2;
qiao=3;
}