【发布时间】:2019-12-06 11:29:59
【问题描述】:
我有一个指针:
const float *m_posBufferPtr_float;
我给这个变量赋值:
m_posBufferPtr_float = reinterpret_cast<const float *>(buffer()->data().constData());
constData() 函数返回 const char * 类型:
inline const char *QByteArray::constData() const
{ return d->data(); }
因此我的reinterpret_cast 应该将const char * 转换为const float *。
但令我惊讶的是,之前 reinterpret_cast 我的指针是:
之后 reinterpret_cast 调试器将我的指针显示为:
我想知道为什么reinterpret_cast 将const char * 转换为float 而不是const float *
【问题讨论】:
-
调试器似乎显示了指向的值而不是它的地址。如果检查类型,第二张图片中为
float,第一张图片中为float*。 -
您可以通过创建一个简单的玩具程序来确认上述情况,该程序只需将 const float ptr 分配给 const float 的地址。
-
@RomhaKorev 谢谢。在图像上,三列是
Name、Value和Type。图片上的值是红色的。 -
它没有转换它我认为它只是你的调试器试图提供帮助并取消引用指针以显示指向的值而不是指针的值。
-
reinterpret_cast不转换任何内容。顾名思义,它会导致您的程序将 char 指针重新解释为浮点指针。如果你的 char 指针没有指向浮点数,你就有问题了。
标签: c++ qt reinterpret-cast