reinterpret_cast 意外地将类型从 `const float *` 更改为 `float`
reinterpret_cast changes type from `const float *` to `float` unexpectedly
我有一个指针:
const float *m_posBufferPtr_float;
我给这个变量赋值:
m_posBufferPtr_float = reinterpret_cast<const float *>(buffer()->data().constData());
在 constData()
函数 returns 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 *
如果您采用此代码段:
int main(int argc, char *argv[])
{
float* pointer = nullptr;
float value = 12.34;
pointer = &value;
qDebug() << *pointer;
}
一步步执行,你会在调试器中看到:
然后
请注意,当指针已初始化时,类型变为 float
。这是由于调试器的配置。
在 Qt Creator 中,右键单击您的指针并取消选中 自动取消引用指针:
我有一个指针:
const float *m_posBufferPtr_float;
我给这个变量赋值:
m_posBufferPtr_float = reinterpret_cast<const float *>(buffer()->data().constData());
在 constData()
函数 returns 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 *
如果您采用此代码段:
int main(int argc, char *argv[])
{
float* pointer = nullptr;
float value = 12.34;
pointer = &value;
qDebug() << *pointer;
}
一步步执行,你会在调试器中看到:
然后
请注意,当指针已初始化时,类型变为 float
。这是由于调试器的配置。
在 Qt Creator 中,右键单击您的指针并取消选中 自动取消引用指针: