带我飞@小甲鱼 发表于 2020-6-24 20:41:03

c++如何从键盘输入一个数作为一维数组的长度代码

c++如何从键盘输入一个数作为一维数组的长度代码

qiuyouzhi 发表于 2020-6-24 20:44:00

# include <iostream>
using namespace std;

int main()
{
        int n;
        cin >> n;
        int a;
}

带我飞@小甲鱼 发表于 2020-6-24 20:48:47

qiuyouzhi 发表于 2020-6-24 20:44


不得行

qiuyouzhi 发表于 2020-6-24 20:49:52

带我飞@小甲鱼 发表于 2020-6-24 20:48
不得行


那你想怎么做?

带我飞@小甲鱼 发表于 2020-6-24 20:54:39

F:\C++软件\MyProjects\practice.cpp(9) : error C2057: expected constant expression
F:\C++软件\MyProjects\\practice.cpp(9) : error C2466: cannot allocate an array of constant size 0
F:\C++软件\MyProjects\practice.cpp(9) : error C2133: 'a' : unknown size
执行 cl.exe 时出错.
运行显示有问题

永恒的蓝色梦想 发表于 2020-6-24 21:18:42

qiuyouzhi 发表于 2020-6-24 20:44


???C++不支持VLA

永恒的蓝色梦想 发表于 2020-6-24 21:19:45

#include<iostream>
using namespace std;


int main() {
    int n;
    cin >> n;
    int* arr = new int;
    return 0;
}

qiuyouzhi 发表于 2020-6-25 07:08:21

永恒的蓝色梦想 发表于 2020-6-24 21:18
???C++不支持VLA

那我这里为啥没报错{:10_250:}

永恒的蓝色梦想 发表于 2020-6-25 08:04:41

qiuyouzhi 发表于 2020-6-25 07:08
那我这里为啥没报错

发个截图?

qiuyouzhi 发表于 2020-6-25 08:23:16

永恒的蓝色梦想 发表于 2020-6-25 08:04
发个截图?

永恒的蓝色梦想 发表于 2020-6-25 08:54:06

qiuyouzhi 发表于 2020-6-25 08:23


啊这https://s1.ax1x.com/2020/06/25/N0e59O.jpg

qiuyouzhi 发表于 2020-6-25 09:44:14

永恒的蓝色梦想 发表于 2020-6-25 08:54
啊这

{:10_250:}

jhanker 发表于 2020-6-26 12:14:41

本帖最后由 jhanker 于 2020-6-26 12:17 编辑

编译器问题

jhanker 发表于 2020-6-26 12:30:39

我是这样认为的:按道理说a数组应该在编译阶段就确定使用的内存空间大小,所以编译就通不过了。在程序运行时,一般的编译器都是按下面这样处理变量的,在main函数运行时,在内存栈区已经把a数组的空间分配好,(用ebp寄存器存储当前函数栈空间变量区的基地址进行寻址)也就是说,还没有输入n时,就应该确定空间了,否则,代码就存在栈空间溢出的问题。
但如果用new运算符在堆区动态建立空间,例如上面的arr就可以,其实c++标准库里的vector就是用上面的方法实现动态数组功能的
我是建议如果要用动态数组最好用标准库里的容器。
我的见解还请大家讨论

jhanker 发表于 2020-6-26 12:33:04

qiuyouzhi 你的编译器挺厉害的,估计编译器是在堆区建立相应空间了。

jhanker 发表于 2020-6-26 16:09:37

qiuyouzhi 发表于 2020-6-25 08:23


你用的是什么编译器?在什么操作系统下的?

qiuyouzhi 发表于 2020-6-26 16:46:07

jhanker 发表于 2020-6-26 16:09
你用的是什么编译器?在什么操作系统下的?

1,g++
2,Windows

jhanker 发表于 2020-6-26 16:51:13

qiuyouzhi 发表于 2020-6-26 16:46
1,g++
2,Windows

你可以跟踪代码看看 a数组是不是把空间建在堆区了
页: [1]
查看完整版本: c++如何从键盘输入一个数作为一维数组的长度代码