2016-08-24 62 views
1

我有一个函数的这个签名:克隆无效*指针为int

void* cloneInt(const void* i); 

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

+1

你一个'int'和存储分配内存'* i'呢? – GSerg

+0

这个工作吗? void * cloneInt(const void * i) int myInt =(int *)malloc(sizeof(int)); myInt = * i; return &myInt; } – Eyzuky

+0

不,你需要创建'int * myInt',并且你需要给它赋值'* myInt = * i'。 – GSerg

回答

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); 
}