类型转换与指针转换

哈努姆

众所周知,类型转换具有以下形式

(int)x       

这是什么意思?

(int *) x

如果f是一个函数,那意味着什么?

(void *) f
海德

(int *) x意味着,取的值x,并将其用作内存地址,该地址指向包含整数的内存位置。这样做时,程序员应该非常小心x(无论它是什么类型)的值确实包含有效地址。否则,仅执行强制转换是“未定义行为”(尽管至少在PC上可能不会做任何有趣的事情),并且取消引用=使用指针很可能会因段错误而崩溃(因为地址无效的内存位置)。

(void *)f强制转换f为“无效指针”。f此处是否有功能无关紧要,因为void指针是一种特殊情况,在代码实际上不需要取消引用指针时使用它,它只是将其传递出去。意思是“这是某物的地址”。例如,它与回调一起使用,当设置回调的代码和回调函数本身确实知道类型时,而介于两者之间的代码则不知道。

如果您在问,如何将函数像这样转换为指针,那是因为在C语言中,没有函数名的函数就()意味着指向该函数的指针。这样做(void*)f根本不常见,但是如果您有需要的用例,那没有什么错。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章