2013-08-30 52 views
1

在研究一些代码,我遇到了以下结构:在这种情况下char str [1]和char * str之间的区别?

/* PACKET format: 
* 
*  clientRandom - 20 byte buffer 
*  yLen   - 4 bytes (LoHi integer) 
*  yData   - yLen byte buffer 
* 
* Total length = 24 + yLen bytes 
*/ 
typedef struct packetFormat 
{ 
    char clientRandom[20]; 
    uint32 yLen; 
    char yData[1]; 
}packetFormat; 

为什么第三个字段不声明为自变量长度的字符缓冲区char *yData

+0

如何在代码中使用此字段? – someuser

+0

没有可用的代码,它在一个头文件中。 –

回答

5

它似乎是一种叫做struct hack的东西。

+0

还有其他的可能吗?如果没有,我可以肯定,它只是以这种方式实施。 –

+0

反正,谢谢你的答案。这似乎是最有可能的方式来使用它。 –

+0

我不百分百确定,如果还有其他的可能性。但到目前为止我还没有看到其他的。 – pzaenger

相关问题