参考:结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法 牛客网 有程序如下: typedef struct { int a; char p[0]; }buffer; 问其中 p 有何作用? C99中,结构体中char p[0]被称为柔性数组,这是个广泛使用的常见技巧,常用来构成缓冲区。比起指针,用空数组有这样的优势:(1)、不需要初始化,数组名直接就是所在的偏移;(2)、不占任何空间,指针需要占用int长度空间,空数组不占任何空间。“这个数组不占用任何内存”,意味着这样的结构节省空间;“该数组的内存地址就和它后面的元素地址相同”,意味着无需初始化,数组名就是后面元素的地址,直接就能当指针使用。 柔性数组只能放在结构体