大佬教程收集整理的这篇文章主要介绍了通过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,请注明来意。