第一种方法 在结构体末尾定义char data[0]实现变长数组 struct MyData{ int nLen; char data[0]; }; 在结构体中,data是一个数组名,但该数组没有元素,不占结构体空间(sizeof(struct MyData) = 4),该数组的地址紧随结构体中变量nLen的地址(如果给这个结构体分配的内容大于这个结构体实际大小,后面多余的部分就是这个data的内容),实现如下: struct MyData *p = (struct MyData