gpt4 book ai didi

c - 关于 C 和泛型函数

转载 作者:太空狗 更新时间:2023-10-29 16:08:53 25 4
gpt4 key购买 nike

我想使用 C 泛型实现搜索

int lsearchGeneric(void *key, void *base, int n, int elemSize)
{
int i =0;

for(; i < n; i++) {
void *elemAddr = (char*) base + i * elemSize;
if(memcmp(key, elemAddr , elemSize) == 0) {
return i;
}
}

return -1;
}

这个函数是用

调用的
char *key = strdup("w");
char *base = strdup("two");

int result = lsearchGeneric (&key, base, 3, sizeof(char));
printf("Position: %d\n", result); // prints -1

我想知道我在这里错过了什么。我期望 1 而不是 -1,因为“w”是“two”中的第二个字母

对于那些想知道这是否是家庭作业的人(你知道你是谁)——答案是“不,不是。我正在听 iTunesU 的编程范式讲座”

最佳答案

看起来你的函数调用中有一个额外的 &:

int result = lsearchGeneric (&key, base, 3, sizeof(char));
^
does not belong here!

您传递的是指针的地址而不是指针本身。这里的赠品是您与两个操作数不一致:您传递了 &keybase,一个有 &,另一个没有.

小记:

此“通用”可能无法与 structs that have padding 一起正常工作.由于填充值未指定,并且可能与其他相同的结构不同。

关于c - 关于 C 和泛型函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8753485/

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