gpt4 book ai didi

c++ - 将原始数据类型转换为 void 指针类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:47:15 25 4
gpt4 key购买 nike

我正在阅读有关 pthreads 的文章 here .在一个例子中,他们给出了 this源代码。

在创建线程时,他们传递了一个 long 类型,类型转换为 void * 类型给函数!。

在函数内部,他们接收这个值并反向转换以获得 long 值。

问题 1:是否允许将指针类型转换为原始数据类型,反之亦然(在 C 和 C++ 中)?

Q2。如果是这样,这样做是件好事吗?他们不应该创建一个指向这种 long 类型的指针,然后将此指针类型转换为 void * 并将其传递给函数。

这种将基本类型转换为指针类型的想法让我感到很困惑?从任何指针类型到 void* 的转换都可以理解,但是原始数据类型如何存储在 void* 类型中?是否有可能在特定系统上原始类型的大小可能大于分配给指针类型的大小?

最佳答案

Q1:是的,但这是否有效取决于实现(= 取决于平台)。一个更安全的版本将使用 uintptr_t 而不是 long

Q2:绝对是糟糕的风格。通过分配一个 long 并传递地址来正确地执行此操作不会造成太大的性能损失。

关于c++ - 将原始数据类型转换为 void 指针类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12949383/

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