鱼C论坛

 找回密码
 立即注册
查看: 3777|回复: 17

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

[复制链接]
发表于 2020-6-24 20:41:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
c++如何从键盘输入一个数作为一维数组的长度代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-24 20:44:00 | 显示全部楼层
# include <iostream>
using namespace std;

int main()
{
        int n;
        cin >> n;
        int a[n];
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-24 20:48:47 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-24 20:49:52 | 显示全部楼层


那你想怎么做?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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 时出错.
运行显示有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-24 21:18:42 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-24 21:19:45 | 显示全部楼层
#include<iostream>
using namespace std;


int main() {
    int n;
    cin >> n;
    int* arr = new int[n];
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-25 07:08:21 | 显示全部楼层

那我这里为啥没报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-25 08:04:41 | 显示全部楼层
qiuyouzhi 发表于 2020-6-25 07:08
那我这里为啥没报错

发个截图?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-25 08:23:16 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-25 08:54:06 | 显示全部楼层

啊这

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-25 09:44:14 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-26 12:14:41 From FishC Mobile | 显示全部楼层
本帖最后由 jhanker 于 2020-6-26 12:17 编辑

编译器问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-26 12:30:39 From FishC Mobile | 显示全部楼层
我是这样认为的:按道理说a数组应该在编译阶段就确定使用的内存空间大小,所以编译就通不过了。在程序运行时,一般的编译器都是按下面这样处理变量的,在main函数运行时,在内存栈区已经把a数组的空间分配好,(用ebp寄存器存储当前函数栈空间变量区的基地址进行寻址)也就是说,还没有输入n时,就应该确定空间了,否则,代码就存在栈空间溢出的问题。
但如果用new运算符在堆区动态建立空间,例如上面的arr就可以,其实c++标准库里的vector就是用上面的方法实现动态数组功能的
我是建议如果要用动态数组最好用标准库里的容器。
我的见解还请大家讨论
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-26 12:33:04 From FishC Mobile | 显示全部楼层
qiuyouzhi 你的编译器挺厉害的,估计编译器是在堆区建立相应空间了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-26 16:09:37 From FishC Mobile | 显示全部楼层
qiuyouzhi 发表于 2020-6-25 08:23

你用的是什么编译器?在什么操作系统下的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-26 16:46:07 | 显示全部楼层
jhanker 发表于 2020-6-26 16:09
你用的是什么编译器?在什么操作系统下的?

1,g++
2,Windows
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-26 16:51:13 From FishC Mobile | 显示全部楼层
qiuyouzhi 发表于 2020-6-26 16:46
1,g++
2,Windows

你可以跟踪代码看看 a数组是不是把空间建在堆区了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 13:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表