HXmap_get没有使用密钥返回正确的数据

时间:2011-02-13 05:38:44

标签: c linux dictionary data-structures

int main()
{
       struct HXmap *limitMap;
        limitMap = HXmap_init(HXMAPT_DEFAULT,HXMAP_CKEY);
        int a[]={1,2,3};
        HXmap_add(limitMap,a,limitMap);
        HXmap_add(limitMap,(a+1),BuyTree);
        HXmap_add(limitMap,&a[2],main);
          int price =1;
          Limit* add = (Limit*)HXmap_get(limitMap,&price);
   printf("Price: %d, Address %p LimitMap %p \n",price,add,limitMap);
        return 0;
}

这段代码的输出在这里:

Price: 1, Address (nil) LimitMap 0x8ff5008

为什么HXmap_get()没有返回正确的地址?

会感激一些帮助。

1 个答案:

答案 0 :(得分:1)

我没有安装libHX,所以这只是根据文档进行猜测......

因为你没有指定密钥是C字符串,也没有提供密钥大小,也没有给出自定义HXmap_ops,所以它使用直接值比较而不是指向int。< / p>

您可以直接使用price作为密钥(不使用指针指向 - int),也可以指定密钥大小。

HXmap_init5(HXMAPT_DEFAULT, HXMAP_CKEY, NULL, sizeof(int), 0);