2013-08-30 53 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

相關問題