小编vit*_*tke的帖子

将double数组转换为double的结构

将双数组转换为由双精度构成的结构是否可以?

struct A
{
   double x;
   double y;
   double z;
};

int main (int argc , char ** argv)
{
   double arr[3] = {1.0,2.0,3.0};
   A* a = static_cast<A*>(static_cast<void*>(arr));
   std::cout << a->x << " " << a->y << " " << a->z << "\n";
}
Run Code Online (Sandbox Code Playgroud)

这打印1 2 3.但它是否保证每次都可以与任何编译器一起工作?

编辑:根据

9.2.21:指向标准布局结构对象的指针,适当转换?使用reinterpret_cast,指向其初始成员(...),反之亦然.

如果我用我的代码替换

struct A
{
  double & x() { return data[0]; }
  double & y() { return data[1]; }
  double & z() { return data[2]; }
private:
   double data[3];
}; …
Run Code Online (Sandbox Code Playgroud)

c++ arrays struct static-cast language-lawyer

10
推荐指数
2
解决办法
840
查看次数

标签 统计

arrays ×1

c++ ×1

language-lawyer ×1

static-cast ×1

struct ×1