-3

可能重复:
(char *) x 或 (void *) z 是什么意思?

我正在使用 c++ 文件并遇到以下行:

tmp.sort(Hash::pairval, printPair, (void *)(tmp.bitSize()));

我最不确定 (void *) 是什么意思。bitsize() 是一个函数,我之前听说过传递函数指针这个术语。就是这样吗?

我知道 :: 通常是范围解析运算符,我在 .cpp/.h 对象类型文件中看到过。我相信这里的目的是相同的,声明pairval 是在Hash 中找到的。

谢谢

4

3 回答 3

0

我最不确定 (void *) 是什么意思。bitsize() 是一个函数,我之前听说过传递函数指针这个术语。就是这样吗?

没有。注意括号,tmp.bitSize()是一个函数调用表达式,被调用并返回一个值。因此 - 这里不涉及函数指针。

然后将返回值转换为指向 void 的指针类型(即包罗万象的“指向某物的指针”类型),以便传递给需要这种指针的函数。

为什么地球上有人会将位大小(看起来像一个数字)转换为指针,我不知道。这介于可疑和不正确之间。

阅读C++ 中的强制转换void*由于严格的别名规则,不鼓励使用 C 风格的强制转换,并且强制转换为很少有用且通常很危险。

知道 :: 通常是范围解析运算符,我在 .cpp/.h 对象类型文件中看到过。我相信这里的目的是相同的,声明pairval 是在Hash 中找到的。

这是正确的。

于 2012-10-22T16:37:58.550 回答
0

(void *) 只是将 tmp.bitSize() 的返回值转换为 void 指针类型。强制转换是 C++ 和 c 中非常常见的操作。

于 2012-10-22T16:34:04.080 回答
0

Hash::pair

很可能是对 class 的静态成员的调用Hash

(void*)部分是一个强制转换为 void 指针,tmp.bitSize()它最有可能返回某种值。所以没有函数指针。

于 2012-10-22T16:35:25.297 回答