gpt4 book ai didi

c - c中void*转int的解释

转载 作者:太空狗 更新时间:2023-10-29 15:55:18 26 4
gpt4 key购买 nike

在我的代码中我有:

int number_compare(void *val1, void *val2) {
if (*(int*) val1 < *(int*s) val2) {

所以基本上要从 void* 转换为 int,我必须转换 *(int *)。

这行得通并给我正确的结果,有人可以告诉我为什么还是给我一个解释它的线程。我已经看过但找不到我理解的答案。

最佳答案

这不是将 void * 转换为 int。它将 void * 指向的任何内容解释为 int。分解:

val1           // void pointer - not dereferenceable
(int *)val1 // pointer to 'int'
*(int *)val1 // the 'int' being pointed to

因此您的函数将传递两个指针:然后它将它们解释为指向 int 的指针并取消引用它们,比较指向的两个 int 值。

相比之下,从 void * 转换为 int 看起来像这样:

int x = (int)val1;

但这几乎肯定不是您想要的 - 首先是因为 int 是有符号的,而指针不是,其次是因为 int 和指针类型可能不同尺寸。

关于c - c中void*转int的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16862302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com