我正在使用C语言实现散列映射,CMapPut
的函数定义如下:
void CMapPut(CMap *cm, const char *key, const void *elemAddr)
我的问题是如何检索传递给地图的元素的实际值?也就是说,当客户端传入变量时,他会传入值的地址。在这种情况下,它似乎是void *
,当然您不能取消引用void *
。有什么提示吗?
答案 0 :(得分:0)
您应该能够将指针强制转换为您需要的类型:
typedef struct {
...
} CMyType;
...
CMyType myinstance;
CMapPut(cm, "key", &myinstance);
我猜你会将指针存储为const void*
。我猜你有一个像CMapGet
这样的函数,你用它来检索你的映射对象:
void *CMapGet(CMap *cm, const char *key);
...
CMyType* myinstance_ptr = CMapGet(cm, key);
答案 1 :(得分:0)
将您的void *
投射到您的合适类型,如其他人所述。其次,您不必const
属性elemAddr
。这没用,因为你可能想要返回一个非const指针。