在这种情况下char str [1]和char * str之间的区别?

时间:2013-08-30 10:22:06

标签: c arrays struct

在研究某些代码时,我遇到了以下结构:

/* 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,因为它是一个可变长度的字符缓冲区?

1 个答案:

答案 0 :(得分:5)

这似乎是一个名为struct hack的东西。