如何在C ++中将浮点指针转换为int指针?

时间:2012-11-29 20:04:23

标签: c++

我知道reinterpret_cast可能会这样做,但我认为它没有进行数据转换。我不想循环并逐个执行它们,并想知道是否有一种优雅的方式来执行指针类型和数据类型转换。 谢谢!

1 个答案:

答案 0 :(得分:3)

如果我假设您有一些float*指向float数组中的第一个元素,并且您想将它们用作int s,那么我建议一些选择:

  1. 如果您不想float,请不要float。只需存储一组int s。

  2. 同样,如果您不想int,请将代码更改为始终使用float

  3. 如果您确实希望拥有float的数组,并且在某些时候想要将它们转换为int,请在需要时执行此操作。使用static_cast<int>以安全的方式对每个元素进行转换。

  4. 如果您想立即转换整个阵列,那么我建议您这样做:

    float float_array[N] = /* ... */;
    std::vector<int> ints(float_array, float_array + N);
    
  5. 或者,如果您真的想坚持使用数组,请使用std::copy

    float float_array[N] = /* ... */;
    int int_array[N];
    std::copy(float_array, float_array + N, int_array);
    

    然而,上述std::vector是首选。