c++ - Reinterpret_cast 在 C++ 中的使用

标签 c++ fftw reinterpret-cast

只是一个简单的问题,有这个:

fftw_complex *H_cast;
H_cast = (fftw_complex*) fftw_malloc(sizeof(fftw_complex)*M*N);

有什么区别:

H_cast=  reinterpret_cast<fftw_complex*> (H); 

H_cast= reinterpret_cast<fftw_complex*> (&H); 

提前致谢

安东尼奥

最佳答案

当前问题的答案

不同的是他们做了两件完全不同的事情!

注意:您没有告诉我们 H 是什么,因此无法自信地回答问题。但一般原则适用。

对于第一种情况是合理的代码,H 应该是指向 fftw_complex 实例的指针(可能类型为 void*?) .您这样做是为了告诉编译器 H 实际上是一个 fftw_complex*,因此您可以使用它。

为了使第二种情况成为合理的代码,H 应该是一个内存布局与类 fftw_complex 相同的类的实例。我想不出一个令人信服的理由让自己陷入这种境地,这很不自然。基于此,并且由于您没有向我们提供有关 H 的信息,我认为这几乎可以肯定是一个错误。

原始答案

主要区别在于,在第二种情况下,您可以在源代码中搜索 reinterpret_cast(并希望确保每次使用都清楚地记录在案并且是必要的恶行)。

但是,如果您从 void* 转换为另一种指针类型(这里是这种情况吗?),那么最好使用 static_cast 代替(也可以是很容易搜索到)。

关于c++ - Reinterpret_cast 在 C++ 中的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6706901/

相关文章:

c++ - FFTW库c++中matlab的FFT和FFTShift

c++ - FFT和IFFT的长度

c - 需要帮助使这个程序计算 PSD

c++ - 使用 reinterpreter_cast 读写二进制文件

c - 打开、读取和打印二维数组! (我的代码有什么问题吗?)

c++ - 将 int32 重新解释为 float

c++ - Lua C API 自定义打印函数,字符串中传入空格时不调用

c++ - std::regex 构造函数安全吗?

c++ - 如何用qdbusxml2cpp生成同步接口(interface)类?

c++ - 在 <class> 对象的 vector 中添加新元素时使用非默认构造函数