克隆void *指向int的指针

时间:2016-08-24 08:30:23

标签: c pointers clone

我有一个功能的签名:

void* cloneInt(const void* i);

int表示散列函数的键。我需要有这个克隆函数,因为它在我的API中用于散列表的泛型实现(此函数是int实现的一部分,此函数将作为指向我的泛型实现将使用的函数的指针转发) 。 但我理解有问题:如何克隆int?我需要返回一个指针,该指针指向int的相同值,但内存中的位置不同。这让我非常困惑。

1 个答案:

答案 0 :(得分:5)

这将有效:

#include <stdio.h>
#include <stdlib.h>

void* cloneInt(const void* i)
{
    int *myInt = malloc(sizeof(int));
    *myInt = *(int*)i;
    return myInt;
}

int main(int argc, char** argv)
{
    int i=10;
    int *j;
    j = cloneInt(&i);
    printf("j: %d i: %d\n", *j, i);
    free(j);
}