C 中的可变长度数组并就地初始化[重复]

2024-04-08

C99 允许定义具有非常量大小的数组,即用于定义数组的大小可以在运行时更改。解释它的代码片段是,

void dummy_function1(unsigned int length) {

 char arrA[length];  //Allowed
 .
 .
}

但是,它不允许就地初始化它,即

void dummy_function2(unsigned int length) {

 char arrA[length]={0}; //Not Allowed, compiler throws an error
 char arrB[10]={0};     //Allowed
 .
}

我不明白,为什么可变长度数组和恒定长度数组的行为存在差异。在这两种情况下,调用函数时都会为数组分配内存。


这是因为编译器不知道用多少个零来“填充”剩余元素。

该声明

char arrA[3] = { 0 };

可以很容易地翻译成

char arrA[3] = { 0, 0, 0 };

在编译时,而可变长度声明则不能。

由于 C 没有运行时系统,编译器必须添加代码以根据给定的长度动态地用零填充。 C 标准力求最小化,同时为程序员提供最大的能力,因此可以避免类似的事情。从 C11 开始,可变长度数组已从标准中删除,并被标记为可选功能。

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

C 中的可变长度数组并就地初始化[重复] 的相关文章

  • 是否可以强制 XMLWriter 将元素写入单引号中?

    这是我的代码 var ptFirstName tboxFirstName Text writer WriteAttributeString first ptFirstName 请注意 即使我使用 ptFirstName 也会以双引号结束 p
  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • 获取按下的按钮的返回值

    我有一个在特定事件中弹出的表单 它从数组中提取按钮并将标签值设置为特定值 因此 如果您要按下或单击此按钮 该函数应返回标签值 我怎样才能做到这一点 我如何知道点击了哪个按钮 此时代码返回 DialogResult 但我想从函数返回 Tag
  • 如何在列表框项目之间画一条线

    我希望能够用水平线分隔列表框中的每个项目 这只是我用于绘制项目的一些代码 private void symptomsList DrawItem object sender System Windows Forms DrawItemEvent
  • 当 contains() 工作正常时,xpath 函数ends-with() 工作时出现问题

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

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • 如何将单个 char 转换为 int [重复]

    这个问题在这里已经有答案了 我有一串数字 例如 123456789 我需要提取它们中的每一个以在计算中使用它们 我当然可以通过索引访问每个字符 但是如何将其转换为 int 我研究过 atoi 但它需要一个字符串作为参数 因此 我必须将每个字
  • 将 xml 反序列化为类,list<> 出现问题

    我有以下 XML
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • C++ fmt 库,仅使用格式说明符格式化单个参数

    使用 C fmt 库 并给定一个裸格式说明符 有没有办法使用它来格式化单个参数 example std string str magic format 2f 1 23 current method template
  • C - 直接从键盘缓冲区读取

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

    我有一段 C 代码 在 GNU Linux 环境下用 g 编译 它加载一个函数指针 它如何执行并不重要 使用一些内联汇编将一些参数推送到堆栈上 然后调用该函数 代码如下 unsigned long stack 1 23 33 43 save
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob
  • 使用随机放置的 NaN 创建示例 numpy 数组

    出于测试目的 我想创建一个M by Nnumpy 数组与c随机放置的 NaN import numpy as np M 10 N 5 c 15 A np random randn M N A mask np nan 我在创建时遇到问题mas

随机推荐

  • Cloud Functions Firebase v1.0 不会初始化

    随着 Firebase 云功能的最新更新 我在初始化应用程序以及数据库引用时遇到错误 第一个错误 以下应该基于 Firebase 函数 v1 0 文档和示例进行工作 https github com firebase Friendlycha
  • 确定合时坐标

    今天金星的下合 虽然由于太阳偏北而仍然可以观测到 激发了 pyEphem 的以下研究 确定金星与太阳下合的日期 pyEphem 中是否有金星和太阳之间 劣 合相的搜索功能 确定该日期金星的黄道纬度 那应该很容易 对过去 100 年和未来 1
  • 按自定义顺序对对象数组进行排序

    我有一个对象数组 其中有一个名为 CODE 的属性 ID 168 NAME First name CODE AD ID 167 NAME Second name CODE CC ID 169 NAME Third name CODE CCM
  • 如何更改Android弹出菜单的背景颜色

    我通过查询数据库生成菜单的每个选项 这是我的代码 final PopupMenu popupMenu new PopupMenu getBaseContext v SQLiteDatabase db AdapterDb getReadabl
  • 使用 Create-React-App 进行 VSCode 调试

    我想设置 VS Code 来调试使用 create react app 创建的 React app 我尝试过这个配置 version 0 1 0 configurations name Launch node type node reque
  • 用什么来做多重相关?

    我正在尝试使用 python 来计算响应数组和一组预测变量之间的多重线性回归和多重相关性 我看到了计算多元线性回归的非常简单的示例 这很容易 但是如何使用 statsmodels 计算多重相关性呢 或与其他任何东西一起作为替代 我想我可以使
  • 获取程序集的原始源代码位置

    有没有办法获取程序集的位置原始源代码通过反射定位 Warning 我不是在寻找程序集的当前位置 而是在编译源代码时所在的位置 e g Given myAssembly dll c program files myapp myAssembly
  • 我可以创建使用 WPF 显示的 Visual Studio 2010 外接程序吗?

    我们正在致力于为我们的企业应用程序创建专门的图形编辑器 我们研究并拒绝了 DSL 理想情况下 我希望编辑器的主界面像代码窗口一样停靠 并使用 WPF 进行绘图 谁能给我指出一些文档 让我走上正确的道路 Thanks Colin 更新 它开始
  • 无法在 Stripe Webhook 中检索会话的变量值

    我正在我的网站中设置 Stripe 订阅 Webhook 我按照文档进行操作 现在 Webhook 已设置在我的网站中 现在 我希望更新网站数据库上的一条记录 其中在我的一个用户订阅我的会员计划后 记录上的一列被设置为另一个值 我尝试在会话
  • 在散景中使用 x 轴上的月份

    假设我有以下数据 import random import pandas as pd numbers random sample range 1 50 12 d month range 1 13 values numbers df pd D
  • 如何在 MySQL 的子查询中指定父查询字段?

    如何在 MySQL 的子查询中指定父查询字段 例如 我用 PHP 编写了一个基本的公告板类型程序 在数据库中 每个帖子包含 id PK 和parent id 父帖子的id 如果帖子本身就是父帖子 则其parent id 设置为0 我正在尝试
  • 如何检查值是否插入成功?

    我有一个将值插入表中的过程 declare fName varchar 50 lName varchar 50 check tinyint INSERT INTO myTbl fName lName values fName lName E
  • 无法访问反应表中解析的数据

    我知道这个问题在 StackOverflow 上已经被问过几次了 但我还没有让之前的任何答案对我有用 我正在寻找一个react table组件 并允许用户下载当前呈现为 CSV 的过滤数据 我知道我需要使用react csv稍后 但现在我什
  • 如何在Pycharm中启用结构视图的自动刷新?

    如何在结构视图中强制刷新或在 Pycharm 中启用自动刷新 任何代码更新后 单击功能将不再起作用 应跳转到功能代码 唯一的可能性是隐藏和显示视图 但它失去了上下文 我需要再次搜索函数名称 对于较大的代码来说这是个坏主意 None
  • Angular:使用 query() + animate() 时如何保持最终动画状态

    看看这个笨蛋 https plnkr co edit mqwJP75zjTUmsqsqRxfH p preview https plnkr co edit mqwJP75zjTUmsqsqRxfH p preview 这是 Angular
  • Oracle SQL 中仅排除一个 MIN 值

    我试图选择一列中除最低值之外的所有值 GameScore 但是当有两个最低值时 我的代码会排除这两个值 我知道它为什么这样做 我只是不知道如何纠正它 并包括两个最低值之一 代码看起来像这样 SELECT Id SUM Score COUNT
  • 是否有 IEEE-754 操作的开源 c/c++ 实现? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 IEEE 754 操作的参考实现 有这样的事吗 我相信 C 库软浮点 http www j
  • 按属性按优先级排序

    我有想要排序的项目 我的项目在模型上计算了属性 包括winning bidding closed and watching 这些属性中的每一个都是 true 或 false 我想对项目进行排序 以便所有获胜项目位于第一 然后是所有投标项目
  • 忽略 doxygen 注释块中的行

    是否可以在 doxygen 注释块中包含将被 doxygen 忽略的内容 换句话说 我们可以在 doxygen 评论块中发表评论吗 背景 我们正在将 Fortran 项目的代码内注释转换为 doxygen 可解析的格式 但是该项目要求代码内
  • C 中的可变长度数组并就地初始化[重复]

    这个问题在这里已经有答案了 C99 允许定义具有非常量大小的数组 即用于定义数组的大小可以在运行时更改 解释它的代码片段是 void dummy function1 unsigned int length char arrA length