Eliaub. 2023-03-21 14:29 采纳率: 80%
浏览 17

关于柔性数组的一些困惑

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

#include<bits/stdc++.h>
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.n;i++)
    {
        cin>>sd.arr[i];
    }
    sort(sd.arr,sd.arr+sd.n,less<int>());
    for(int i=0;i<sd.n;i++)
    {
        cout<<sd.arr[i]<<" ";
    }
    return 0;
}

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

  • 写回答

2条回答 默认 最新

  • 於黾 2023-03-21 14:34
    关注

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

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月21日

悬赏问题

  • ¥15 游戏盾如何溯源服务器真实ip?
  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL
  • ¥35 跳过我的世界插件ip验证
  • ¥15 抖音看过的视频,缓存在哪个文件
  • ¥15 自定义损失函数报输入参数的数目不足
  • ¥15 如果我想学习C大家有是的的资料吗
  • ¥15 根据文件名称对文件进行排序
  • ¥15 deploylinux的ubuntu系统无法成功安装使用MySQL❓