我是C的新手,我正在尝试使用Arraylist库。然而,“创建Arraylist”功能给我带来了麻烦,因为签名对我来说几乎没有任何意义。具有该签名的有效函数调用是什么?
这是完整的签名: Arraylist arraylist_create(const Boolean(* equals)(const Object object_1,const Object object_2))
非常感谢任何帮助!!
答案 0 :(得分:5)
Arraylist arraylist_create(const Boolean (*equals)(const Object object_1,
const Object object_2));
函数arraylist_create
的参数说equals
是一个函数指针,它带有两个类型为const Object
的参数,返回类型为const Boolean
。 arraylist_create
返回类型为Arraylist
。
这个例子可以帮助你 -
const Boolean foo( const Object obj1, const Object obj2 ){
// ....
}
Arraylist temp = arraylist_create( &foo );
答案 1 :(得分:0)
我认为你需要从右到左阅读它才有意义。
这是一个函数指针,用于获取类型为Object的2个非变化(const)对象并返回Boolean类型的不可更改(const)对象。
答案 2 :(得分:0)
arraylist_create
返回一个Arraylist
,并将一个指向函数的指针作为参数返回const Boolean
,并将两个const Object
作为参数。因此,首先您需要指定(或获取)与equals
的要求兼容的函数(可能是为了比较列表元素),例如:
const Boolean myEquals(const Object object_1, const Object object_2) {
return (Boolean which is true if object_1 is equal to object_2);
}
然后:
Arraylist list = arraylist_create(myEquals);
答案 3 :(得分:0)
对我而言,该函数需要另一个函数,用于比较arraylist中的对象。
这样的事情:
const Boolean my_equals(const Object object_1, const Object object_2)
{
// Should really cast the objects to the correct type for your values
return object_1 == object_2; // Replace with your own comparison
}
// In main()
Arraylist arraylist = arraylist_create(my_equals);