与数组指针的联合声明?

问题描述:

我有以下工会结构:与数组指针的联合声明?

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}}; 

我只是想知道有什么方法解决由exsisting阵列申报工会吗?像这样:

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

不,那是不可能的。使用数组的名称在几乎所有上下文中都会“衰减”到指向第一个元素的指针。

顺便说一句,这与你的数组隐藏在union内部无关。数组不能分配给它,并且初始化它们的唯一方法就是使用初始化程序。

不过,您可以使用memcpy复制内容。