程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了通过c中的函数返回两个不同类型的值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决通过c中的函数返回两个不同类型的值?

开发过程中遇到通过c中的函数返回两个不同类型的值的问题如何解决?下面主要结合日常开发的经验,给出你关于通过c中的函数返回两个不同类型的值的解决方法建议,希望对你解决通过c中的函数返回两个不同类型的值有所启发或帮助;

我们可以在c中通过函数返回两个值吗?

例如:这里我试图构建一个函数,该函数返回是否存在多数元素,如果有,我们返回 (true,x) 而 x 是多数元素,否则,我们返回 (false,0 )

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>

// Fonction qui verifIE si il y a un element majoritaire ou pas 
//dans une Liste en utilisant un algorithme recursive



int nbr_occ(int A[],int n,int x)
{
    int c=0,i;
    
    for(i=0;i<n; i++)
    {
        if (A[i]==x) c++;
    }
    return c;
}
(_Bool,int) majoritaire (int A[],int i,int j)
{
    bool rx,ry;
    int x,y;
    if(i=j) return (true,A[i]);
       (rx,x) = majoritaire (A,i,(i+j)/2) ;
       (ry,y) = majoritaire (A,(i+j)/2 + 1,j);
        
       if (rx=false && ry=false)
       return (false,0)    ;
       if (rx= true && ry=true)
       {
           if( x=y ) return (vrai,x)
           else if ( nbr_occ(x) > (i-j)/2 ) return (true,x);
           else if ( nbr_occ(y) > (i-j)/2 ) return (true,y);
           else return (false,0);
       }
       else if(rx=true)
       {
           if ( nbr_occ(x) > (i-j)/2) return (true,x);
           else return (false,0);
       }
       else if (ry=true)
       {
           if( nbr_occ(x) > (i-j)/2 ) return (true,y);
           else return ( false,0);
       }
}```

解决方法

请参阅以下说明如何返回 struct 的代码。请根据您的目的进行调整,然后:

#include <stdio.h>
#include<stdlib.h>
#include<stdbool.h>

typedef struct {
    _Bool hasMajority;
    int majority;
} majorityStruct;

majorityStruct myFunc(int a,int b) {
    // just for demonstration:
    majorityStruct result;
    if (a == b) {
        result.hasMajority = false;
        result.majority = 0;
    } else {
        result.hasMajority = true;
        result.majority = a-b;
    }
    return result;
}

int main() {
    majorityStruct f = myFunc(20,10);
    printf("%d:%d\n",f.hasMajority,f.majority);
    return 0;
}
,

一个常见的习惯用法是正常返回一个值(通常是指示成功/失败的值),并将另一个值存储在调用者提供的地址中,即存储到通过引用传递的变量中。

_Bool majoritaire (int A[],int i,int j,int *result) {
    // ...
    if (has_majority) {
        *result = m;
        return true;
    } else {
        *result = 0; // or omit this,and document that 
                     // the result is only valid when true is returned
        return false;
    }
}

void other_function(void) {
    int r;
    if (majoritaire(A,i,j,&r)) {
        printf("There is a majority and it is %d\n",r);
    } else {
        printf("No majority\n");
    }
}

根据我的经验,当只需要返回两个值时,这比 struct 方法更常见。

大佬总结

以上是大佬教程为你收集整理的通过c中的函数返回两个不同类型的值全部内容,希望文章能够帮你解决通过c中的函数返回两个不同类型的值所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: