关于柔性数组的一些困惑

当我只定义一个柔性数组时,发现它并不能根据我的需求扩展长度,反而像是一个固定长度一样,是怎么回事,求解答?

#include
using namespace std;

struct xueshen
{
    int n;
    int arr[0];
};
int main()
{
    ios::sync_with_stdio(0);
    int m;
    struct xueshen sd;
    cin>>m>>sd.n;
    for(int i=0;i>sd.arr[i];
    }
    sort(sd.arr,sd.arr+sd.n,less<int>());
    for(int i=0;i" ";
    }
    return 0;
}

执行这段代码后发现当我设置数组长度大于5时就会开始出现排序混乱的现象,在5及5之内时排序正常,求解答/

啥叫柔性数组,c语言里没有这个概念
你这就是定义了一个长度为0的数组,一直在越界访问
小于5没事也只是凑巧,因为这些内存没有分配给别的变量
而凡是分配了的,变量值来回变,你里面当然全乱了呀
-=-=-=
别说是c语言这种古老的语言不可能自动分析你需要多少内存
就算是python,你定义好一个list,也需要用append方法告诉它增加一个元素,你直接往第n个位置赋值不越界才怪