C:两个void指针的区别是什么类型?

2023-11-29

如果我减去两个空指针,我就会得到指针位置之间的相对距离(至少在我的测试系统上)。我应该使用什么类型来存储结果,以便与 64 位系统兼容? size_t 是正确的类型还是很长?

背景:我们需要检查给定的 void 指针是否可以安全地用作双指针。我们曾经将指针强制转换为 int 并检查低三位是否为零,但是我们当前的编码标准不再允许将指针强制转换为整数类型。我正在考虑计算 void 指针和 NULL 指针之间的差异,并检查该差异是否可以被 8 整除。假设 NULL 指针始终是 8 字节对齐的?


C 标准中没有定义 void 指针的减法。仅当指针都指向同一个数组时才定义指针的减法,并且 void 指针不能指向任何数组,因为数组中不能包含 void 元素。

您很可能使用 gcc 或兼容的东西,它允许对 void 指针进行算术作为扩展,并将其视为 char 指针。但严格的 C 编译器不应允许对 void 指针进行指针算术。

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

C:两个void指针的区别是什么类型? 的相关文章

随机推荐

  • 如何在 html 中嵌入 .AVI?

    我在网上找到了一些 html 中的 AVI 示例 但我的页面http pianocheater com VIDEO html是有问题的 我的电脑上的 chrome 没问题 在 IE 中 您会在顶部看到那个该死的栏 然后视频就变成空白了 它可
  • 在 Python 中进行多处理时无法使用输入

    我想同时运行2个进程 1 将继续每秒打印 a 另一个进程将要求输入 当输入为 Y 时 第一个进程将停止打印 a 我对 Python 还很陌生 我不明白 这是我到目前为止想到的 from multiprocessing import Proc
  • 谁能告诉我 pragma 语句的用法

    谁能告诉我 C 和 Ada 中 pragma 的使用 如果可能的话请提供一些例子 C99 中有 3 个标准编译指示 pragma STDC FP CONTRACT on off switch pragma STDC FENV ACCESS
  • 几何平均值:有内置的吗?

    我试图找到一个内置的几何平均值 但找不到 显然 内置函数不会在 shell 中工作时为我节省任何时间 我也不怀疑准确性有任何差异 对于脚本 我尝试尽可能频繁地使用内置函数 其中 累积 性能提升通常是显而易见的 万一没有 我怀疑是这样 这是我
  • 如何在 Python 中将一个内存 SQLite 数据库复制到另一个内存 SQLite 数据库?

    我正在为 Django 编写一个测试套件 它以树状方式运行测试 例如 测试用例 A 可能有 2 个结果 测试用例 B 可能有 1 个结果 测试用例 C 可能有 3 个结果 树看起来像这样 X A B C X B X X C X X 对于上面
  • 要求在 Prestashop 模块上的一个文件中自动加载的方法?

    我正在尝试将一组库与 Composer 一起用于 Prestashop 模块 我目前的方法是包括vendor autoload php每个文件上的文件 mymodule php controllers front foo php contr
  • 为什么我们需要使用 boost::asio::io_service::work ?

    有一个使用 boost asio 的示例 为什么这个例子使用 boost asio io service work 为什么是srv run 没有调用线程来执行任务 int main boost asio io service srv boo
  • 尝试使用 C# 中的 ODbc 从 MSysObjects 读取数据,但出现无权限错误

    如标题所述 我试图从 Access 2010 数据库中的 MSysObjects 读取数据 但出现异常 告诉我不允许从该表中读取数据 我可以读出其他非 MSys 表 SQL Query I am using SELECT FROM MSys
  • 如果视图具有特定类(backbone.js),则点击时触发函数

    我有一个div由backbone js视图生成 当用户点击这个div 一类active被添加到div和函数addToSet被执行 Problem 我希望在视图的时候触发另一个函数div有课active 但是 我的尝试如下所示总是导致addT
  • 返回从 A1 到最后使用的真正单元格的范围

    我想选择电子表格中的所有行和列 宏需要是动态的 因为每次调用宏时列数和行数往往会发生变化 它还需要能够考虑空白行和列 该子程序完成部分过程 Sub FindLastCell Cells Find What After A1 SearchDi
  • 在 C# 中从 XML 填充下拉列表

    我有以下 xml 格式 并且我正在使用 NET 2 0
  • Neo4j:在树状图中显示所有连接的节点及其父节点

    我的 neo4j 数据库中有以下布局 a b c d e f g h i j 我想做的是查询所有子节点 例如如果起始节点是b 那么孩子们是e f h 所有节点都具有相同的标签 名称 和相同的关系类型 我可以通过以下方式完成此任务 MATCH
  • Core Data 多线程存储关系

    我的问题很奇怪 我正在寻求帮助 我想向您解释我的系统是如何工作的 我对此有两个问题 我正在制作有两个表的应用程序 我正在使用核心数据 表格是类别 and Products 在核心数据中我建立了一对多的关系Category可以有多个Produ
  • Java 重写是如何工作的

    我有一个愚蠢的困惑 当我们重写父类方法时 这个派生重写方法是否仍然保留父类方法的代码 或者它是我们可以定义的新方法 阅读本文以明确概念 http docs oracle com javase tutorial java IandI over
  • 使用 Bouncy Castle 在 Java 中创建自定义 X509 v3 扩展

    我已成功使用 Bouncy Castle 中的 X509v3CertificateBuilder Java 类创建具有标准 V3 扩展的 X509 证书 我现在正在尝试创建具有自定义扩展的证书 我可以使用 addExtension 方法创建
  • C 中 x64 的 128 位算术

    在 x86 上实现 bignum 时 显然数字大小最有效的选择是 32 位 但是 您需要进行最多两倍数字大小的算术运算 即 32 32 33 32 32 64 64 32 32 幸运的是 x86 不仅提供了这一点 而且还可以通过可移植的 C
  • df.fillna(0) 命令不会将 NaN 值替换为 0

    我试图将下面代码中生成的 NaN 值替换为 0 我不明白下面的内容不起作用 它仍然保留 NaN 值 df pubs pd read sql select Conference Year count as totalPubs from pub
  • 如何在 Rails 6 中跳过现有项目的活动记录

    我有一个现有的 Rails 项目 它是在 API 模式下创建的 不使用数据库 在尝试部署到 Heroku 时 我收到许多与 ActiveRecord 相关的错误 gt Detecting rake tasks Could not detec
  • 强制改变方向

    我有一个基于选项卡的应用程序 其中一个选项卡在纵向和横向模式下都可用 所有其他选项卡仅在纵向模式下可用 我正在检查是否允许在 shouldAutorotateToInterfaceOrientation 中旋转的按钮 但是当我处于横向模式时
  • C:两个void指针的区别是什么类型?

    如果我减去两个空指针 我就会得到指针位置之间的相对距离 至少在我的测试系统上 我应该使用什么类型来存储结果 以便与 64 位系统兼容 size t 是正确的类型还是很长 背景 我们需要检查给定的 void 指针是否可以安全地用作双指针 我们