(size_t)((char *)0) 的计算结果是否不等于 0?

2023-11-21

根据中的答复“为什么要在 offsetof() 中减去空指针?”(以及我对 K&R 的阅读),C 标准并不要求这样做(size_t)((char *)0) == 0。不过,我从未见过将空指针转换为整数类型会计算出其他值的情况。

如果有一个编译器或场景(size_t)((char *)0) != 0, 它是什么?


嗯,如您所知,给定类型的空指针的物理表示不一定是全零位模式。当您强制将指针(任何指针)值转换为整数类型时,结果是实现定义的,但通常(这就是意图)指针的数值(数字地址)如果可能的话保持不变。这意味着如果在给定平台上,类型为空指针char *表示为0xBAADF00D模式(例如),上面的表达式将计算为0xBAADF00D,并且不为零。当然,为此您需要一个具有非零空指针的平台。我个人从未使用过此类平台,尽管我听说过许多类似的真实平台(例如,在嵌入式平台领域,这并不罕见)。

此外,作为补充说明,不同类型的空指针值可以具有不同的物理表示,这意味着理论上您可以从(size_t) ((int *) 0), (size_t) ((char *) 0) and (size_t) ((double *) 0)。但这将是一种相当奇特的情况,尽管从抽象 C 语言的角度来看这是完全可能的。

附:读here(C FAQ)有关具有非零空指针的实际平台的一些示例。

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

(size_t)((char *)0) 的计算结果是否不等于 0? 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 按成员序列化

    我已经实现了template
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • 检测 Jetpack Compose 上的滑动方向

    我正在尝试检测 Compose 中的滑动方向 我为此使用了可拖动修改器 但可拖动仅允许检测一个方向 垂直或水平 我想检测所有方向的滑动 左 右 上 下 谁能帮我我该怎么做 谢谢 您可以使用pointerInput修改器控制拖动手势detec
  • 从应用程序类启动服务[重复]

    这个问题在这里已经有答案了 可能的重复 我可以从 Application onCreate 启动服务吗 我们可以从应用程序类启动一个服务吗 我想在我的应用程序启动时启动一项服务 因此 我可以使用我的应用程序类来代替从启动活动启动服务吗 谢谢
  • 如何使用 Python 中的 Matplotlib 和数据列表绘制直方图?

    如何使用绘制直方图matplotlib pyplot hist 我有一个与条形高度相对应的 y 值列表 以及一个 x 值字符串列表 有关的 matplotlib pyplot bar 如果您想要直方图 则无需将任何 名称 附加到 x 值 因
  • “无法找到 SpatiaLite 库。”姜戈

    我正在尝试让 Django 的 SQLite3 接受空间查询 本教程建议我将其添加到设置中 SPATIALITE LIBRARY PATH mod spatialite 这会产生此错误 django core exceptions Impr
  • 如何将 Python 对象序列化为 XML?

    我需要将 Python 对象序列化为 XML 数据 我尝试使用 Django 但它仅适用于 QuerySet 对象 不适用于任何简单的 Python 对象 如何将 Python 对象序列化为 XML 数据 http freshmeat ne
  • IE9 提示用户提交隐藏的 iFrame

    我正在调试我们的文件上传脚本 该脚本在不支持通过 XMLHttpRequest 对象发送文件数据的浏览器中使用隐藏的 iframe 有大量关于在 IE 中提交 iframe 的文章和问题 喜欢这个帖子 and 这个帖子 但他们都指出 IE
  • 除了重构和重命名类或属性名称之外,还有什么其他可用选项?

    当我尝试快速重命名我的类时 它会显示如下错误 我只是想知道 在 Objective C 中它允许我们重命名类名 那么为什么它在 Swift 中不可用 或者任何其他方式来做同样的事情 如果有什么好的方法请推荐我 Thanks 目前Xcode不
  • 使用委托从 C# 调用 IronRuby

    是否可以使用委托作为参数从 C 调用 IronRuby 方法 方法如下 yield会工作 以下给了我一个参数数量错误 1 代表 0 例外 Action
  • R - 计算数据帧列从顶行到底行的平均值

    标题可能不太清楚 因为很难用几句话概括这个问题 尽管我不认为这个问题有那么难解决 为了解释这个问题 我分享一个dataframe供参考 head df n 10 team score 1 A 10 2 A 4 3 A 10 4 A 16 5
  • 安卓如何设置延迟?

    public void onClick View v TODO Auto generated method stub switch v getId case R id rollDice Random ranNum new Random in
  • 有VF2算法的工作示例吗?

    我一直在读VF2算法用于查找两个图是否同构 但不知何故错过了大局 可能是我缺少该领域的相关背景 但我所看到的只是我在每个步骤中需要使用的一堆规则 而没有看到为什么要执行这些步骤的直观解释 从基本的谷歌搜索来看 这似乎被认为是查找两个图是否同
  • 如果字符串池内存不足会发生什么?

    如果字符串池中有很多字符串文字并且内存不足 会发生什么情况 它会变大吗 如果是的话 如何变大 如果没有 如果我尝试创建更多字符串文字会发生什么 首先第一点 STRING POOL 没有字符串文字 字符串池是指向字符串对象的引用的集合 当您编
  • Java 中使用 double 类型进行除法时出错

    好的 我已经把头撞在墙上了大约两个小时 现在试图找出世界上的原因double answer 364 365 告诉我answer是 0 或者任何其他组合double就此而言 它只是截断小数 我只是不知道为什么 364 365 执行整数除法 截
  • 如何为每个外键选择有限数量的行?

    我有这张表 id feed id 假设我有 500 行 我想为每个 feed id 选择 3 个条目 总数限制为 50 这个SQL该怎么写呢 Use SELECT x feedid FROM SELECT t feedid CASE WHE
  • 你能确定一个字符串在 C 中是否可释放吗? [复制]

    这个问题在这里已经有答案了 如果我说 include
  • 如何在 imageview 上提供色调分离效果?

    我正在尝试为 imageview 提供 Photoshop 色调分离效果 这是一张普通图像 应用色调分离效果后 它应该看起来像这样 这个效果取自pixlr 图像编辑器 我想要以编程方式获得精确的效果 我尝试过的是 我试图通过 Saturat
  • 使用 ASP.NET MVC 进行 Windows 身份验证

    我为我的 asp net mvc 1 0 Web 应用程序构建了一个自定义登录系统 因为我为每个用户存储大量用户数据 因此我决定不尝试为 Windows 身份验证添加自定义表 登录系统基本上使用SQL Server 2005或2008 和我
  • 如何在同一个应用程序中使用多个 JDBC 驱动程序?

    据我了解 一旦我执行 Class forName net sourceforge jtds jdbc Driver 我初始化应用程序以全局使用 JTDS SQL Server 驱动程序 并且 java sql DriverManager g
  • 使用 JKS 和/或 PFX 证书从 C# 客户端调用 Java Web 服务

    我基本上需要确保我对该服务的请求 我被提供了一个JAR测试客户端和两个文件 trust jks and Client pfx 但我不知道如何使用它们 我了解 X509Certificate2 类以某种方式涉及 执行测试客户端的命令行如下 j
  • (size_t)((char *)0) 的计算结果是否不等于 0?

    根据中的答复 为什么要在 offsetof 中减去空指针 以及我对 K R 的阅读 C 标准并不要求这样做 size t char 0 0 不过 我从未见过将空指针转换为整数类型会计算出其他值的情况 如果有一个编译器或场景 size t c