C 中允许负数组索引吗?

2024-04-07

我刚刚读了一些代码,发现这个人正在使用arr[-2]访问之前的第二个元素arr,像这样:

|a|b|c|d|e|f|g|
       ^------------ arr[0]
         ^---------- arr[1]
   ^---------------- arr[-2]

这是允许的吗?

我知道arr[x]是相同的*(arr + x). So arr[-2] is *(arr - 2),这看起来不错。你怎么认为?


那是对的。从 C99 §6.5.2.1/2 开始:

下标的定义 运算符 [] 是 E1[E2] 是 与 (*((E1)+(E2))) 相同。

没有魔法。这是 1-1 的等价。与往常一样,在取消引用指针 (*) 时,您需要确保它指向有效的地址。

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

C 中允许负数组索引吗? 的相关文章

  • 如何知道并加载特定文件夹中的所有图像?

    我有一个应用程序 C Builder 6 0 需要知道特定文件夹中的图像总数 然后我必须加载它们 在 ImageList 或 ComboBoxEx 中 或任何其他控件中 我怎样才能做到这一点 我知道如何在控件中加载图像 或保存在 TList
  • 如何从当前 .NET 表单/应用程序发送密钥 F12

    我非常确定以下按钮激活的表单代码应该在我的 C 应用程序中引发 Control F12 SendKeys F12 但它似乎并没有继续进入 Windows shell 并激活另一个正在侦听它的程序 我的键盘可以用 看起来发送键在某处被拦截 并
  • 测试 hdf5/c++ 中的组是否存在

    我正在打开一个现有的 HDF5 文件来附加数据 我想向那个叫做的小组保证 A存在以供后续访问 我正在寻找一种简单的方法来创建 A有条件地 如果不存在则创建并返回新组 或者返回现有组 一种方法是测试 A存在 我怎样才能高效地做到这一点 根据
  • 如何在 C# 事件中区分更改是由代码还是由用户进行?

    我有一个简单的TextBox一开始是空的 我有一个简单的事件 TextChanged 可以知道用户何时更改了其中的任何内容TextBox 但是 如果我自己在代码中对其执行任何操作 该事件就会触发 喜欢设置textbox Text Test
  • 处理 LINQ sum 表达式中的 null

    我正在使用 LINQ 查询来查找列的总和 并且在少数情况下该值有可能为空 我现在使用的查询是 int score dbContext domainmaps Where p gt p SchoolId schoolid Sum v gt v
  • 使用 C# 使用应用程序密码登录 Office 365 SMTP

    在我们的 Office 365 公司帐户中实施两步身份验证之前 我的 C WPF 程序已成功进行身份验证并发送邮件 我使用了 SmtpClient 库 但现在我必须找到另一个解决方案 因为它不再起作用 我找不到任何使用 O365 应用程序密
  • 浮点提升:stroustrup vs 编译器 - 谁是对的?

    在 Stroustrup 的新书 C 编程语言 第四版 第 10 5 1 节中 他说 在执行算术运算之前 整数提升用于从较短的整数类型创建整数 类似地 浮点提升是用于从浮点数创建双精度数 我用以下代码确认了第一个声明 include
  • 阅读 Stack Overflow RSS 源

    我正在尝试获取未回答问题的列表the feed https stackoverflow com feeds 但我在阅读时遇到困难 const string RECENT QUESTIONS https stackoverflow com f
  • Qt中正确的线程方式

    我的图像加载非常耗时 图像很大 并且在加载时也完成了一些操作 我不想阻止应用程序 GUI 我的想法是在另一个线程中加载图像 发出图像已加载的信号 然后用该图像重绘视图 我的做法 void Window loadImage ImageLoad
  • 组合 Datepicker 和 Timepicker 值 Win 8.1

    我试图同时使用 Datepicker Timepicker 来返回可以存储在数据库中的 DateTime 例如 我想要安排会议的开始日期和结束日期 如果适用 我将如何将这些值组合成 SQL 数据库可以处理的正确格式 任何反馈都会很棒 我让这
  • 当格式字符串包含“{”时,String.Format 异常

    我正在使用 VSTS 2008 C Net 2 0 执行以下语句时 String Format 语句抛出 FormatException 有什么想法是错误的吗 这是获取我正在使用的 template html 的位置 我想在 templat
  • 多维数组将每个列表数组存储在另一个数组中

    我嵌套了可能有 2 或 3 层深度的多维数组 在它里面我可能有也可能没有列表数组 我需要循环数组 Array 0 gt Array id gt 1 name gt cat name 1 list gt Array 1 gt swgdgbdg
  • C++ Primer 5th Edition 错误 bool 值没有指定最小大小?

    bool 的最小大小不应该是 1 个字节吗 这有点学术性的东西 尽管它们会转换为数字 并且 与其他所有事物一样 它们最终将基本上由计算机内存中的数字表示 但布尔值不是数字 你的bool可以取值true 或值false 即使您确实需要至少 1
  • 如何在 C++ 中使用 PI 常数

    我想在一些 C 程序中使用 PI 常数和三角函数 我得到三角函数include
  • 编写专门用于类及其子类的函数模板

    我正在尝试编写一个函数模板 一个版本应该用于不满足另一版本标准的所有类型 当参数是给定类的基类或该类本身时 应使用另一个版本 我尝试过超载Base 但是当类派生自Base 他们使用通用的 而不是特定的 我也尝试过这种 SFINAE 方法 s
  • 如何从枚举中选择随机值?

    给定 C 中的任意枚举 如何选择随机值 我没有找到这个非常基本的问题 我会在一分钟内发布我的答案作为任何人的参考 但请随意发布你自己的答案 Array values Enum GetValues typeof Bar Random rand
  • C# - 为什么我需要初始化 [Out] 参数

    我有几个从本机 dll 导入的方法 使用以下语法 internal static class DllClass DllImport Example dll EntryPoint ExampleFunction public static e
  • 宏观评价[重复]

    这个问题在这里已经有答案了 可能的重复 未定义的行为和序列点 https stackoverflow com questions 4176328 undefined behavior and sequence points 我无法理解以下宏
  • 如何仅更改 DateTime 的日期部分,同时保留时间部分?

    我在代码中使用了很多 DateTime 我想将这些日期时间更改为我的特定日期并保留 时间 1 2012 02 02 06 00 00 gt 2015 12 12 06 00 00 2 2013 02 02 12 00 00 gt 2015
  • C++0x 中的新 unicode 字符

    我正在构建一个 API 它允许我获取各种编码的字符串 包括 utf8 utf16 utf32 和 wchar t 根据操作系统 可能是 utf32 或 utf16 新的 C 标准引入了新类型char16 t and char32 t没有这么

随机推荐

  • 使用c#备份和恢复Azure sql数据库

    我想将 Azure sql 数据库备份到本地系统 然后在 C 中将该备份恢复到 Azure sql 数据库 任何人都可以帮助我吗 可以这样做吗 Azure SQL 数据库不支持按需创建 bak 文件 Azure SQL 数据库自动备份所有数
  • 如何仅在一个事务中禁用 PostgreSQL 触发器?

    我需要在事务中临时禁用一个 PostgreSQL 触发器 但不需要硬锁定表 有人知道这是否可能吗 像这样的事情 无需锁定表并禁用此事务之外的触发器 BEGIN TRANSACTION ALTER TABLE foo DISABLE TRIG
  • 在 Perl 中处理美元计算的最佳技术是什么?

    在 Perl 中处理美元计算的最佳技术是什么 特别是 以下需要工作 balance 10 payment balance 3 Each payment should be 3 33 How best to round amount bala
  • C#:“Pretty”类型名称函数?

    对于泛型类型 System Type 类的名称属性会返回一个奇怪的结果 有没有办法以更接近我指定的方式获取类型名称 例子 typeof List
  • 在 Swift 上委托 Objective-C 协议

    我正在使用 Swift 语言在 iOS 上实现 UDP 侦听器 为此 我正在转述CocoaAsyncSocket https github com robbiehanson CocoaAsyncSocket项目 我成功地使用 Bridgin
  • 在 C++ 中使用 pthread

    我在用pthread h in a cc文件 当我尝试使用时pthread exit 0 or pthread join mythrds yy NULL 它说 cc text 0x3e undefined reference to pthr
  • 无法使用 Server.MapPath

    我必须做什么才能做到Server MapPath work I have using System Web 还有什么 当我打字时Server没有快速结果选项 智能感知 Server 有什么帮助吗 你可以尝试使用这个 System Web H
  • 如何在 Objective-C 中对 URL 进行编码或解码

    有没有类似的东西 NSString URLencode NSString someString NSString URLdecode NSString someString 如果可以 如何实施 请注意投反对票的人 这不是一个简单的问题 我需
  • Code-golf:将乘法表输出到控制台

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我最近向一位从事工作经验的学生推荐了一篇有关将乘法表转储到控制台的文章 它使用嵌套的 for
  • 雅虎财经历史数据下载网址无效

    我使用以下网址从雅虎财经获取历史数据 从 2017 年 5 月 16 日起 该网址已失效 好像他们已经更改了网址 新网址是 在上面更改的 URL 中有一个会话 cookie 它是碎屑 有什么想法如何以编程方式获取此cookie 在JAVA中
  • 无法通过api在材质表react中获取数据

    我正在尝试通过 Material React 表中的 api 获取数据 但它向我显示错误 如下所示 无效的挂钩调用 钩子只能在函数组件的主体内部调用 发生这种情况可能是由于以下原因之一 1 您的React和渲染器版本可能不匹配 例如Reac
  • 文本框文本在文本输入时消失

    基本上我有一个创建的用户窗体 我想知道是否可以添加用户窗体加载时存在的灰色文本 但一旦用户开始在文本框中输入文本 该文本就会消失 图片已过期 一旦用户开始输入 字体颜色应更改为黑色 任何帮助 将不胜感激 像这样的东西吗 Private Su
  • Kotlin Foo::class.java“未解析的参考:Java”错误

    我正在尝试将我的 Java 代码转换为HomePage class到科特林 我正在按照以下说明进行操作Kotlin org https kotlinlang org docs reference java interop html 获取类
  • SetCursorPos 无法通过远程桌面工作(从 WM_INPUT 事件读取)

    当读取鼠标位置时WM INPUT事件 并且鼠标光标被隐藏 看起来SetCursorPos通过远程桌面使用该应用程序时不起作用 当应用程序不通过远程桌面使用时 相同的代码可以正常工作 即我可以在所有方向上进行无限的鼠标移动 因为SetCurs
  • 如何使用 Bot Framework 在 Teams 中添加提及以及自适应卡

    我正在尝试发送带有自适应卡片附件的活动 并提及创建该帖子的用户 通过在线阅读 我发现您目前无法在自适应卡片中包含提及内容 有没有办法在发送活动时提及某人 例如在另一个附件中 我尝试设置activity Text 提及 这有效 但是它创建了两
  • Google Geocharts:同一地图上的区域和标记?

    我正在尝试使用谷歌地理图表 https google developers appspot com chart interactive docs gallery geochart 我有州数据和城市数据 我想在城市数据上显示它们 这意味着我想
  • 如何获取两个 git 分支之间不同提交的列表?

    我想查看两个分支之间仅非常见提交的列表 我怎样才能得到这样的输出 基本上是一个git diff y master new feature两个分支之间的总结 master new feature xxx Jan 1st 2018 initia
  • 呼叫其他代码呆子 - 嵌套循环的替代方案?

    对于我 或可能其他人 来说 拥有一个需要迭代的对象列表 然后与属性列表进行交互的情况并不罕见 我使用嵌套循环 如下所示 IList
  • 解析一个小端二进制文件,填充到一个矩阵中

    我有一个包含 X X 矩阵的二进制文件 文件本身是一个单精度浮点数 小端 序列 我想做的就是解析它 并将其填充到一些合理的 clojure 矩阵数据类型中 谢谢这个问题 https stackoverflow com questions 7
  • C 中允许负数组索引吗?

    我刚刚读了一些代码 发现这个人正在使用arr 2 访问之前的第二个元素arr 像这样 a b c d e f g arr 0 arr 1 arr 2 这是允许的吗 我知道arr x 是相同的 arr x So arr 2 is arr 2