C语言怎么实现一个能适用于不同数据类型的函数?

比如我想写一个函数,想看一个给定的数组中是否包含某个元素,如果包含该元素,返回该元素的索引,否则返回-1.

问题是怎么写这样一个函数,可以适用于不同的数据类型。 抽象数据类型先撇开不讲,怎么写这样一个函数,可以适用于 int, char, float 等这些基本的数据类型。

// value 是要查询的元素, array是数组, len是数组长度 
int inArray(void *value, void *array, int len)
{
    int i;
    for(i=0; i<len; i++)
        if(*value == array[i])
            return i;

    return -1;
}

我写了这样一个函数,但是编译通不过。请高手指点一下,有什么好的方法?

阅读 7k
1 个回答
int in_array(const void *arr, int arr_len, const void *elem, int elem_size)
{
    int i;
    const void *p = arr;
    for (i = 0; i < arr_len; i++, p += elem_size)
        if (memcmp(p, elem, elem_size) == 0)
            return 1;
    return 0;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进