gpt4 book ai didi

c - 带空参数的函数

转载 作者:行者123 更新时间:2023-12-02 01:49:37 25 4
gpt4 key购买 nike

我必须执行一个函数,该函数接受任何数据类型的变量并返回相同数据类型的变量。我不知道如何做到这一点,我所知道的是我必须使用 void 作为参数的数据类型,所以我所拥有的就是这个,显然是行不通的:

void better (void a, void b)
{
if ( a > b )
return a;
else if ( b > a )
return b;
}

所以我的问题是这样做的正确方法是什么?这不是我的确切任务,我只是想了解它是如何工作的。

最佳答案

也许首先识别比较方法会有所帮助:

typedef enum CMPTYPE_E
{
CMPTYPE_STRCMP,
CMPTYPE_INT
// ..etc
} CMPTYPE_T;

然后,可以提供一个方法来比较每个定义的类型:

void *better (void *a, void *b, CMPTYPE_T cmpType)
{
switch(cmpType)
{
case CMPTYPE_STRCMP:
return(strcmp(a,b) > 1 ? a : b);

case CMPTYPE_INT:
return((*((int *)a) > *((int *)b)) ? a : b);

// ...etc
}
}

关于c - 带空参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23616079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com