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

Don*_*ild 1 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;
Run Code Online (Sandbox Code Playgroud)

为什么第三个字段没有声明为char *yData可变长度的char缓冲区?

pza*_*ger 5

它似乎是一个叫做struct hack的东西.