将数组大小定义为用户输入的变量合法吗?

2024-05-01

我认为数组的大小应该是恒定的。我在 VS 2019 中编写代码,甚至当我执行以下操作时:

    const int size = 5;
    int number[size];

我会收到这个错误expression must have a constant value,直接使用整数作为数组大小的唯一替代方法是使用macro define,否则我会收到错误。

但在一些 IDE 中,比如dev,甚至可以将数组的大小作为用户的输入。我还看到人们在这里使用用户定义的数组大小编写代码。

所以这是我的问题:

这样做对吗?用户定义的数组大小是否存在风险和问题?


可变长度数组 (VLA) 是从 C99 开始合法 https://en.cppreference.com/w/c/language/array,尽管一些编译器(例如 GCC)也将允许它们作为旧版本中的扩展。从 C11 开始,编译器不再需要支持 VLA,并将定义__STDC_NO_VLA__ as 1如果他们不支持的话。

VLA 本质上是有风险的:要么您事先知道数据的最大大小,在这种情况下您可以分配一个固定长度的数组,要么您不知道,在这种情况下您将面临堆栈溢出的风险。

值得注意的是,在 C++ 中,变长数组从来都不是标准的一部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将数组大小定义为用户输入的变量合法吗? 的相关文章

  • 访问私人成员[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过将类的私有成员转换为 void 指针 然后转换为结构来访问类的私有成员是否合适 我认为我无权修改包含我需要访问的数据成员的类 如果不道德 我
  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • pthread_cond_timedwait() 和 pthread_cond_broadcast() 解释

    因此 我在堆栈溢出和其他资源上进行了大量搜索 但我无法理解有关上述函数的一些内容 具体来说 1 当pthread cond timedwait 因为定时器值用完而返回时 它如何自动重新获取互斥锁 互斥锁可能被锁定在其他地方 例如 在生产者
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • Newtonsoft JSON PreserveReferences处理自定义等于用法

    我目前在使用 Newtonsoft Json 时遇到一些问题 我想要的很简单 将要序列化的对象与所有属性和子属性进行比较以确保相等 我现在尝试创建自己的 EqualityComparer 但它仅与父对象的属性进行比较 另外 我尝试编写自己的
  • 当 contains() 工作正常时,xpath 函数ends-with() 工作时出现问题

    我正在尝试获取具有以特定 id 结尾的属性的标签 like span 我想获取 id 以 国家 地区 结尾的跨度我尝试以下xpath span ends with id Country 但我得到以下异常 需要命名空间管理器或 XsltCon
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • Numpy - 根据表示一维的坐标向量的条件替换数组中的值

    我有一个data多维数组 最后一个是距离 另一方面 我有距离向量r 例如 Data np ones 20 30 100 r np linspace 10 50 100 最后 我还有一个临界距离值列表 称为r0 使得 r0 shape Dat
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 将 xml 反序列化为类,list<> 出现问题

    我有以下 XML
  • C++ fmt 库,仅使用格式说明符格式化单个参数

    使用 C fmt 库 并给定一个裸格式说明符 有没有办法使用它来格式化单个参数 example std string str magic format 2f 1 23 current method template
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a

随机推荐

  • Shutil.rmtree() 引发异常 WindowsError:访问被拒绝:

    尝试使用 python 脚本自动删除文件 我得到 Traceback most recent call last Python script 5 line 8 in
  • 减少 CSS 网格中的行间距

    我想知道如何减少行间距 我尝试过将边距和填充设置为 0 但似乎没有什么效果 左侧为桌面视图 右侧为移动视图 content margin 0 padding 0 width 100 display grid grid gap 5px gri
  • 优化spark sql中分区数据写入S3

    我在每个 Spark 作业运行中从 HDFS 读取大约 700 GB 的数据 我的工作读取这些数据 过滤大约 60 的数据 将其分区如下 val toBePublishedSignals hiveCtx sql some query toB
  • 使用 PLINQ 扩展时是否会传输线程标识?

    我正在使用 AsParallel ForAll 在 ASP NET 请求上下文中并行枚举集合 枚举方法依赖于System Threading Thread CurrentPrincipal 我是否可以依赖用于将 System Threadi
  • 使用 crypto.getRandomValues() 生成 0 到 1 的随机数

    看起来 Math random 会生成 0 1 范围内的 64 位浮点数 而新的 crypto getRandomValues API 仅返回整数 使用此 API 生成 0 1 中的数字的理想方法是什么 这似乎有效 但似乎不太理想 ints
  • 如何避免获取 .repo/manifest.xml?

    如何避免获取 repo manifest xml 故意修改的 我不想在回购同步期间对其进行修改 我已经做了一个repo init 这一步就完成了 我对manifest xml做了一个小修改 删除了一些同步不需要的项目 当我们进行存储库同步时
  • 模数在 Javascript 中不起作用

    我试图理解为什么模运算不能按预期工作 我需要验证 IBAN 该算法包括进行取模 根据维基百科 在此输入链接描述 https en wikipedia org wiki International Bank Account Number Va
  • Hibernate加载惰性代理,但我只需要PK

    我有这些实体 Entity public class Room ManyToOne optional true fetch FetchType LAZY private Player player1 Entity public class
  • 如何使用openJDK11运行Eclipse?

    怎样必须eclipse ini看起来像是让 Eclipse Photon 2018 09 或 2018 12 在 openJDK11 上运行 我已经安装了 openJDK 11 0 1 和 Eclipse 2018 09 我有一个包含 XM
  • Java Swing并发显示JTextArea

    我需要执行 显示从 Arraylist 到 JTextArea 的一系列事件 但是 每个事件的执行时间不同 以下是我的目标的一个简单示例 public void start ActionEvent e SwingUtilities invo
  • 读/写结构到文件 - c

    我正在用 C 语言创建一个学生数据库 我需要做的最后一件事是能够读取我创建的数据库并将其写入文件 所以我已经有了一个充满指向学生结构的指针的数组 我需要将其写入文件 一旦我写完它 我也需要能够将它读回到我的数组中 我真的不知道该怎么做 这是
  • Google Colab:为什么 CPU 比 TPU 快?

    我正在使用 Google colabTPU训练一个简单的Keras模型 删除分布式strategy并在CPU比TPU 这怎么可能 import timeit import os import tensorflow as tf from sk
  • 我什么时候应该声明一个不带 noexcept 的移动构造函数?

    该标准不会在移动构造函数上强制执行 noexcept 在什么情况下移动构造函数可以抛出异常 当你真的别无选择的时候 大多数时候你的移动构造函数应该是noexcept 它们是默认的 看这个 http www codingstandard co
  • 更改 UITextField 占位符颜色

    如何动态更改占位符颜色UITextField 这始终是相同的系统颜色 xib 编辑器中没有选项 来自文档 property 非原子 复制 NSAttributedString attributedPlaceholder 该属性默认为零 如果
  • 为什么 SwiftMailer 发送两封电子邮件?

    我通过 PHP 的 SwiftMailer 库发送电子邮件 我有这个 PHP 代码 用于从 1 个发件人向 1 个电子邮件收件人发送 1 封电子邮件 这是代码 email some email recipient sendEmail sen
  • 你能限制 TypeScript 全局类型的范围吗?

    我们的团队已经配置了 TypeScript 来使jest全球可用的类型 tsconfig json types jest testing library jest dom 这真的很好 test ts文件 但今天我意识到它也接受jest 和相
  • Python ggplot 和 ggplotly

    前 R 用户 我曾经通过 ggplotly 函数广泛组合 ggplot 和plot ly 库来显示数据 刚接触 Python 时 我看到 ggplot 库可用 但找不到与用于图形反应显示的绘图简单组合的任何内容 我想要寻找的是这样的 fro
  • Postgresql:如何从时间戳、时区字段正确创建带有时区的时间戳

    我有一个带有时间戳但没有时区的表 年 月 日 时 分 秒 以及 时区 字段 P 代表太平洋 M 代表山地 我需要创建一个 带有时区的时间戳 类型的字段 鉴于我有两个字段 有没有办法正确考虑夏令时 具体来说 时间戳 2013 11 03 01
  • 适用于 Android 的 Google Analytics API v4 不发送屏幕视图

    我已经为 google Analytics api v4 设置了所有内容 如下所示 https developers google com analytics devguides collection android v4 https de
  • 将数组大小定义为用户输入的变量合法吗?

    我认为数组的大小应该是恒定的 我在 VS 2019 中编写代码 甚至当我执行以下操作时 const int size 5 int number size 我会收到这个错误expression must have a constant val