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