C 数组的指针算术

2023-12-19

我正在阅读 K&R 中有关数组算术的部分,并发现了一些奇怪的东西。我发布了整个段落以了解上下文,但我主要关注粗体部分。

如果 p 和 q 指向同一个数组的成员,则关系如 ==, !=、= 等都可以正常工作。例如,如果 p 点,则 p (有一个例外: 可以使用数组末尾之后的第一个元素的地址 在指针算术中。)

这个异常的原因是什么?当定义数组大小时,是否会在数组末尾分配额外的内存?如果是这样,目的是什么?是不是以空字符结束数组呢?


原因是您可以在循环中增加指针,如下所示:

char a[42], *p;

for (p = a; p < &a[sizeof a]; p++)  // or p != &a[sizeof a]
{
   /* ... */
}

如果没有额外的规则,这将是未定义的行为,因为指针将无效。

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

C 数组的指针算术 的相关文章

  • 启动时出现 OData v4 错误:找不到段“Whatever”的资源

    我正在构建新的 v4 服务 一切进展顺利 直到我为新模型 实体添加了新控制器 并在启动站点进行测试运行时收到此错误 控制器似乎编码正确 就像其他控制器一样 控制器 CustomersOData 中的操作 GetFeed 上的路径模板 Cus
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • 包含字符串和数字的数组

    在 Objective C 中 很容易创建一个异构数组 如下所示 NSArray myArray String1 String2 123 456 有什么方法可以快速创建这样的数组吗 如果是的话怎么办 Note 我在 swift 中尝试了类似
  • XamlReader.Load 在后台线程中。是否可以?

    WPF 应用程序具有从单独的文件加载用户控件的操作 使用XamlReader Load method StreamReader mysr new StreamReader pathToFile DependencyObject rootOb
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 在 C# 中循环遍历文件文件夹的最简单方法是什么?

    我尝试编写一个程序 使用包含相关文件路径的配置文件来导航本地文件系统 我的问题是 在 C 中执行文件 I O 这将是从桌面应用程序到服务器并返回 和文件系统导航时使用的最佳实践是什么 我知道如何谷歌 并且找到了几种解决方案 但我想知道各种功
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 如何在 Linq 中获得左外连接?

    我的数据库中有两个表 如下所示 顾客 C ID city 1 Dhaka 2 New york 3 London 个人信息 P ID C ID Field value 1 1 First Name Nasir 2 1 Last Name U
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • Rx 中是否有与 Task.ContinueWith 运算符等效的操作?

    Rx 中是否有与 Task ContinueWith 运算符等效的操作 我正在将 Rx 与 Silverlight 一起使用 我正在使用 FromAsyncPattern 方法进行两个 Web 服务调用 并且我想这样做同步地 var o1
  • 如何编写一个同时需要请求和响应Dtos的ServiceStack插件

    我需要提供本地化数据服务 所有本地化的响应 Dto 都共享相同的属性 IE 我定义了一个接口 ILocalizedDto 来标记那些 Dto 在请求端 有一个ILocalizedRequest对于需要本地化的请求 Using IPlugin
  • 私有模板函数

    我有一堂课 C h class C private template
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • 如何在 C# 中调整图像大小同时保持高质量?

    我从这里找到了一篇关于图像处理的文章 http www switchonthecode com tutorials csharp tutorial image editing saving cropping and resizing htt
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 使用 GhostScript.NET 打印 PDF DPI 打印问题

    我在用GhostScript NET http ghostscriptnet codeplex com打印 PDF 当我以 96DPI 打印时 PDF 打印效果很好 但有点模糊 如果我尝试以 600DPI 打印文档 打印的页面会被极大地放大
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当

随机推荐

  • 如何重新启动流星

    If I close the browser tab and press Ctrl Z to exit the current running meteor process how do I start meteor again to re
  • 如何在 SQL Server 2008 中将图像字段中的 varbinary 值更新为 null?

    我上传了一张图像并存储到数据库的图像字段中 该图像存储为 0xFFD8FFE 当我尝试用 null 更新上面的内容时 出现了一个异常 数据类型 image 和 varbinary max 在等于运算符中不兼容 我想将上面的值更改为空 只需使
  • 基于唯一列的行求和 awk

    我正在寻找一种更优雅的方法来执行此操作 对于超过 100 列 awk a 1 4 b 1 5 c 1 6 d 1 7 e 1 8 f 1 9 g 1 10 END for i in a print i a i b i c i d i e i
  • 如何在MS Word中自定义引文样式?

    要在 MS Word 中创建自定义引文样式 我按照此网页中的说明进行操作https msdn microsoft com en us vba word vba articles create custom bibliography styl
  • 显示一个元素并在 1 秒后隐藏它

    我有以下元素 div class text hide Hello SO div 我用 jQuery 展示它 如下所示 text addClass show removeClass hide So my div 是表演 我现在希望它在 1 秒
  • 切换到较新版本的 android ndk 时未定义的模块

    我正在尝试从 ndk r11c 升级到 ndk r14 当我运行 r14 时 出现错误 Android NDK 模块 myJNI 依赖模块 png jpeg log 在我的 Android 版本中 LOCAL SHARED LIBRARIE
  • setcookie() 不会在 Google Chrome 中设置 cookie

    我正在阅读一些有关如何设置 cookie 的 PHP 教程 我注意到 cookie 在 FF4 和 IE9 上成功设置 但在 Chrome 11 0 696 60 中没有设置 PHP 文件由 XAMPP localhost 提供 我尝试了
  • 使用脚本或工具仅获取 HTML 元素

    我正在尝试获取大量状态信息 这些信息在网站中编码 主要在 head gt 元素内 我知道我可以使用wget or curl或 python 获取整个页面 但我不想给服务器带来太多不必要的压力 页面本身相当大 复杂 有没有什么方法可以只获取头
  • 出现错误“需要左值作为赋值的左操作数”

    我是 C 新手 在编译简单代码时遇到以下问题 include
  • 如何使用 font-face 缩小 CSS

    我有一个带有字体的样式表 当我使用在线服务缩小 CSS 时 字体停止工作 我采取的方法是提取 font face 代码 缩小 css 的其余部分 然后将 font face 粘贴到缩小后的样式表的顶部 好奇是否有人对此有更好的方法 我使用此
  • 如何在向前传递数据后将数据向后传递到视图控制器?

    我正在开发一个测验应用程序 并且在初始视图控制器之后出现第二个视图控制器 要求您回答问题 在第二个视图控制器上 用户必须按下按钮才能返回到初始视图控制器才能被问到另一个问题 然而 当我从第二个视图控制器返回时 我相信正在创建初始视图控制器的
  • appcelerator titan - 隐藏导航栏android

    是否可以在 Appcelerator Titanium 中永久隐藏 Android 底部导航 关于这个主题有很多问题 但没有很好的解决方案
  • 如何用numpy降序排序?

    我有一个像这样的 numpy 数组 A array 1 3 2 7 2 4 1 3 6 1 2 3 我想按降序对该矩阵的行进行排序 并获取排序矩阵的参数 如下所示 As array 3 1 2 0 1 3 0 2 0 3 2 1 我做了以下
  • Excel vba 重命名复选框

    我有一个包含许多复选框的工作表 Excel 自动将它们命名为 CheckBox1 CheckBox2 等 但是 对于我的文档 我需要将它们全部重命名为 Rij11 1 Rij11 2 等 Rij11 是第 11 行 1 是该行中的第一个复选
  • Java获取不带子字符串的文件扩展名

    我如何在Java中获得文件扩展名而不使用那个愚蠢的方法lastIndexOf etc apache Commons 库有FilenameUtils getExtension http commons apache org proper co
  • 如何计算wpf控件的总渲染时间?

    是否有任何探查器或工具可用于计算特定控件的 渲染时间 渲染时间 控件完全渲染到屏幕上所需的时间 我不知道有什么工具 但如果它只是一个控件 您可以创建一个子类 重写渲染方法并使用秒表来查找一些计时
  • As 公式中出现意外符号,无法找到

    我一直在使用as formula用于设置 glm 我不知道意外的符号在哪里 部分问题是我要转换的字符向量太长 大约有700字 插入两者之间 以便将其转换为公式 错误提示如下 Error in parse text x keep source
  • Webpack-Dev-Server 未显示最新的更改文件

    我正在尝试运行一个使用带有 HMR 和源映射的 webpack 开发服务器的项目 但遇到了问题 当我单独使用 webpack 和我的配置文件时 源映射会在控制台输出中指示 并且 HMR 可以进行页面刷新 但没有服务器 当我尝试使用 webp
  • 使用 Intellij IDE 运行 Scala Dotty 项目

    我使用 Dotty 模板创建了一个基本的 Scala Dotty 项目 并将该项目导入到 IntelliJ IDE 当我使用时一切正常sbt命令行 当我尝试在 IntelliJ IDE 中构建或运行它时 出现以下错误 Error scala
  • C 数组的指针算术

    我正在阅读 K R 中有关数组算术的部分 并发现了一些奇怪的东西 我发布了整个段落以了解上下文 但我主要关注粗体部分 如果 p 和 q 指向同一个数组的成员 则关系如 等都可以正常工作 例如 如果 p 点 则 p 有一个例外 可以使用数组末