柔性数组我认为就是动态数组,在C++中,定义柔性数组需要两个步骤:
1.定义一个结构体
2.在结构体最后一个元素定义一个没有长度的数组

下面的b就是一个柔性数组,如果把b放到a的上面是会报错的

struct MyStruct
{
int a;
int b[];
}

执行下面代码,会打印出4,因为4是int类型a的大小,四个字节,也就是说,b不占用任何空间

int main()
{
MyStruct ms;
std::cout << sizeof(ms);
}

如果将结构体调整成

struct MyStruct
{
int a;
int b[1];
}

那么sizeof(ms)会打印出8,一个a加一个长度为1的b

也就是说,柔性数组的初始值,才会影响这个结构体的大小