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()没有返回正确的地址?
希望能得到帮助。

最佳答案

我没有安装libHX,所以这只是根据文档猜测…
因为您没有指定键是C字符串,也没有提供键大小,也没有提供自定义的HXmap_ops,所以它使用直接值比较,而不是跟随指向int的指针。
您可以直接使用price作为键(不使用指向-int的指针),也可以指定键的大小。

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

09-11 17:35