比如我想写一个函数,想看一个给定的数组中是否包含某个元素,如果包含该元素,返回该元素的索引,否则返回-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;
}
我写了这样一个函数,但是编译通不过。请高手指点一下,有什么好的方法?
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;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。