static_cast和传递void指针c ++

时间:2015-10-18 06:30:43

标签: c++ void-pointers

void syslog(int priority, const char *message, ...);

所以我这里的代码基本上就是我想要完成的,但我显然不理解void指针并将它们传递给compare函数。我基本上想要做的是将void指针指向数组,将其转换为char指针,这样我就可以增加它。然后我想将特定部分传递给compare函数。我真的需要有人向我解释我想要做的事情背后的逻辑,因为我似乎并不理解将void指针传递给compare函数。我无法改变功能原型。我的问题不是通过char指针递增,我理解那部分而我只是使用item_ptr和item_ptr + 1来演示传递数组的特定部分。当我发送到要比较的部件时,最后一行代码中断了,所以我需要理解我的逻辑中的缺陷。谢谢!

1 个答案:

答案 0 :(得分:1)

据我所知,你的问题。有多个版本的比较函数具有不同的函数名称,但void指针作为参数。 这些函数用于处理不同类型的数据。

您的功能是使用这些比较函数来比较数组。 我认为你的功能还不完整。

如果items_ptr是char *的类型,那么你应该使用

::do_thing() {

如果我没有错,你使用items_ptr循环/遍历array_ptr指向的缓冲区(数组)。

如果是这样,请不要使用+ 1转到下一个项目,而是使用+ sizeOfEachItem。 如果你想获得第n个元素,请使用array_ptr + n * sizeOfEachItem

希望这有帮助。