带数组指针的联合声明?

时间:2017-07-25 21:41:00

标签: c

我有以下联合结构:

typedef union Message
{
  struct
  {
    unsigned short header: 16;
    unsigned short header2: 16;
    unsigned int timestamp: 32;
    unsigned int payload: 32;

  } pieces;
  unsigned short whole[6];
}Message;

如果我以这种方式声明它可行

Message msg = {.whole={255,255,255,0,255,0}};

我只是想知道有没有任何解决方案来通过现有数组声明union?像这样:

unsigned short arr[] = {255,255,255,0,255,0};
Message msg = {.whole=arr};

1 个答案:

答案 0 :(得分:3)

不,那是不可能的。使用数组的名称可以使它“衰变”#34;指向几乎所有上下文中第一个元素的指针。

顺便说一下,这与你的数组隐藏在union内的事实毫无关系。数组无法分配,初始化它们的唯一方法就是使用初始化程序。

但您可以使用memcpy复制内容。