夜耿耿而不寐 2021-04-06 21:01 采纳率: 0%
浏览 349

C++——为什么变量不能作为数组长度?

我们学习C++中会发现,数组的长度不能用变量来表示,如下片断所示:

#include<iostream>
using namespace std;
void main()
{
    int length;
    cin >> length;
    int i = length,array[length];//此处会报错,visual studio2019上面报错如下:
                                 //表达式必须含有常量值,变量length(已声明)的值不可用作常量
    while (i)
    {
        cin >> array[i];
        i--;
    }
}

 为了实现这样的功能,C++里面增添了动态数组,用new和delete实现。

但是,为什么要这么麻烦呢?

难道直接像上面这样写不香么?

我本人的初步想法是内存空间这方面的问题。

求解,,,

  • 写回答

5条回答 默认 最新

  • lemon-l 2021-04-06 21:41
    关注

    局部变量用的都是栈的内存,栈内存有个特点,就是编译的时候就能确定大小,运行时就会自动分配,然后生命周期结束的时候会自动释放。假如数组设计成可以用变量去动态定义的话,这种使用方式就不符合栈内存的特点了,那它就不能使用栈,而得用堆,那你就得手动去释放内存。这样的话数组使用起来就不方便了。我想设计者主要是想提供两种不同的数组实现方式,一种用栈内存,一种用堆内存。想要使用方式简单的话就用栈,想要灵活分配内存的话就用堆

    评论

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀