一、柔性数组
typedef struct
{
int head;
int tail;
char buf[];//char buf[0]也可,区别是前者为c99支持,后者为编译器非标准扩展。
}ring;
柔性数组应用广泛,相比定长数组,它能根据需要动态分配空间,节省资源;相比指针,他的内存跟结构体是连续的,方便操作和管理。
二、变长数组(VLA)
int row = 10;
int col = 20;
char arry[row][col];//VLA数组
变长数组被c99支持,它的特点是只能用在局部,不可是全局;且定义时不可初始化。
变长是指数组的维可以是变量,而不是创建后可以随意更改大小。