使用指向单个值的指针作为数组

2024-03-31

(请注意,该问题已针对“注册”变量进行了扩展)

简而言之,我的问题是:这个合法的 C 代码是否合法(按照不同 ISO 9899 C 规范的标准字母 - 最好在标准的文字中加上“证明”):

int a = 0;
int b = (&a)[0];

const int c = 0;
b = (&c)[0];

问题延伸:这条评论 https://stackoverflow.com/questions/27860290/use-pointer-to-single-value-as-array#comment44123363_27860427 by 延斯·古斯特 https://stackoverflow.com/users/366377/jens-gustedt表明不允许获取寄存器变量的地址。这是真的?还可以提供标准中的其他引用来解释这一点吗?

/* Question extension */
register int d = 0;
int e = (&d)[0];

背景:

我有一组数组,表示对象结构化集合的属性 - 对于每个属性一个数组。所以数组是这个结构化集合的线性化。这些属性数组元素都与不同的值进行比较,具体取决于对象在结构化集合中的位置。这些值的结构方式也与集合的结构相关:-) 属性数组可能具有不同的类型。

因此,我编写了一个宏,它迭代所有属性(给定任何属性数组)并提供可用作比较值数组的数组索引的动态结构信息。该宏的输入为: - 属性数组 - 比较谓词 - 比较值数组 - 以及值数组的索引变量名称(用于在宏内相当复杂的循环中提供结构信息) - 布尔值来收集结果

所以你可以这样说:

COMP_ALL(attr1Arr,  <=, limitbyCath1Arr, cath1Idx, anyLimitFault)

在对不同类别进行线性化的深度循环中,您会发现如下比较:

anyLimitFault = anyLimitFault 
                  && (attr1Arr[objCounter]  <= limitbyCath1Arr[cath1Idx]);

现在有时只有一个极限值,所以我想写:

int limit = -1;
COMP_ALL(attr4Arr, <=, (&limit), 0, anyLimitFault);

当然我总是可以这样做:

 int limit = -1;
 int temp[1];
 temp[0] = limit;

 COMP_ALL(attr4Arr, <=, temp, 0, anyLimitFault);

但我更喜欢另一种方式,所以我可以概括为:

 COMP_ALL2Value(attr_arr, pred, val, collector) \
      COMP_ALL(attr_arr, pred, (&val), 0, collector)

Yes. &a在您的示例中,可以将其视为指向单元素数组的第一个元素的指针。

C99 / C11 §6.5.6加法算子第7节

就这些运算符而言,指向不是元素元素的对象的指针 数组的行为与指向长度为 1 的数组的第一个元素的指针相同 对象的类型作为其元素类型。

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

使用指向单个值的指针作为数组 的相关文章

  • 添加对共享类的多个 WCF 服务的服务引用

    我正在尝试将我的 WCF Web 服务拆分为几个服务 而不是一个巨大的服务 但是 Visual Studio Silverlight 客户端 复制了两个服务共享的公共类 这是一个简单的例子来说明我的问题 在此示例中 有两个服务 两者都返回类
  • 在 C++ 中分割大文件

    我正在尝试编写一个程序 该程序接受一个大文件 任何类型 并将其分成许多较小的 块 我想我已经有了基本的想法 但由于某种原因我无法创建超过 12 kb 的块大小 我知道谷歌等上有一些解决方案 但我更感兴趣的是了解这个限制的根源是什么 然后实际
  • 在 OpenCL 中将函数作为参数传递

    是否可以在 OpenCL 1 2 中将函数指针传递给内核 我知道可以用C实现 但不知道如何在OpenCL的C中实现 编辑 我想做这篇文章中描述的同样的事情 在 C 中如何将函数作为参数传递 https stackoverflow com q
  • 处理 fanart.tv Web 服务响应 JSON 和 C#

    我正在尝试使用 fanart tv Webservice API 但有几个问题 我正在使用 Json Net Newtonsoft Json 并通过其他 Web 服务将 JSON 响应直接反序列化为 C 对象 这里的问题是元素名称正在更改
  • Guid 应包含 32 位数字和 4 个破折号

    我有一个包含 createuserwizard 控件的网站 创建帐户后 验证电子邮件及其验证 URL 将发送到用户的电子邮件地址 但是 当我进行测试运行时 单击电子邮件中的 URL 时 会出现以下错误 Guid should contain
  • 如何避免 ArrayIndexOutOfBoundsException 或 IndexOutOfBoundsException? [复制]

    这个问题在这里已经有答案了 如果你的问题是我得到了java lang ArrayIndexOutOfBoundsException在我的代码中 我不明白为什么会发生这种情况 这意味着什么以及如何避免它 这应该是最全面的典范 https me
  • VS30063:您无权访问 https://dev.azure.com

    我正在尝试在 asp net core 2 1 mvc 应用程序中使用以下代码连接 Azure DevOps Uri orgUrl new Uri https dev azure com xxxxx String personalAcces
  • Xamarin Android:获取内存中的所有进程

    有没有办法读取所有进程 而不仅仅是正在运行的进程 如果我对 Android 的理解正确的话 一次只有一个进程在运行 其他所有进程都被冻结 后台进程被忽略 您可以使用以下代码片段获取当前正在运行的所有 Android 应用程序进程 Activ
  • 禁用 LINQ 上下文的所有延迟加载或强制预先加载

    我有一个文档生成器 目前包含约 200 个项目的查询 但完成后可能会超过 500 个 我最近注意到一些映射表示延迟加载 这给文档生成器带来了一个问题 因为它需要根据生成的文档来访问所有这些属性 虽然我知道DataLoadOptions可以指
  • C++派生模板类继承自模板基类,无法调用基类构造函数[重复]

    这个问题在这里已经有答案了 我试图从基类 模板 继承 派生类也是模板 它们具有相同的类型 T 我收到编译错误 非法成员初始化 Base 不是基类或成员 为什么 如何调用基类构造函数 include
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • C# 搜索目录中包含字符串的所有文件,然后返回该字符串

    使用用户在文本框中输入的内容 我想搜索目录中的哪个文件包含该文本 然后我想解析出信息 但我似乎找不到该字符串或至少返回信息 任何帮助将不胜感激 我当前的代码 private void btnSearchSerial Click object
  • 以编程方式使用自定义元素创建网格

    我正在尝试以编程方式创建一个网格 并将自定义控件作为子项附加到网格中 作为 2x2 矩阵中的第 0 行第 0 列 为了让事情变得更棘手 我使用了 MVVM 设计模式 下面是一些代码可以帮助大家理解这个想法 应用程序 xaml cs base
  • 从类模板参数为 asm 生成唯一的字符串文字

    我有一个非常特殊的情况 我需要为类模板中声明的变量生成唯一的汇编程序名称 我需要该名称对于类模板的每个实例都是唯一的 并且我需要将其传递给asm关键字 see here https gcc gnu org onlinedocs gcc 12
  • 如何确定母版页中正在显示哪个子页?

    我正在母版页上编写代码 我需要知道正在显示哪个子 内容 页面 我怎样才能以编程方式做到这一点 我用这个 string pageName this ContentPlaceHolder1 Page GetType FullName 它以 AS
  • 如何使用 std::array 模拟 C 数组初始化“int arr[] = { e1, e2, e3, ... }”行为?

    注意 这个问题是关于不必指定元素数量并且仍然允许直接初始化嵌套类型 这个问题 https stackoverflow com questions 6111565 now that we have stdarray what uses are

随机推荐

  • 初始化变量时收到“UnboundLocalError:赋值前引用的局部变量‘e’”

    这个问题在这里已经有答案了 社区编辑给出可重现的示例 def main e None print locals while not e try raise Exception except Exception as e pass main
  • 在 Mac OS X 中使用 PHP 模块安装 ImageMagick Brew

    我已经使用安装了 ImageMagickbrew install imagemagick 这一切都运行良好 我可以从终端 命令行运行任何 ImageMagick 命令 现在 当我尝试在 PHP 中使用 ImageMagick 类时 出现错误
  • 如何使用urllib3打印原始html字符串?

    我使用下面的语句来获取 html 字符串 import urllib3 url http urllib3 readthedocs org http pool urllib3 connection from url url r http po
  • Python ftplib 损坏文件?

    我正在使用 ftplib 在 Python 中下载文件 直到最近一切似乎都工作正常 我正在下载这样的文件 ftpSession ftplib FTP host username password ftpSession cwd rlmfile
  • 在 Corda 中,节点的内置网络服务器上没有安装自定义 CorDapps。

    我定义了一个包含 API 的 CorDapp 但是 当我部署 CorDapp 并运行节点时 我在 Web 服务器 URL 上看到以下消息 No installed custom CorDapps 如何让节点的内置网络服务器加载我的 API
  • file_get_contents 创建一个空文件

    在 if 子句中用作测试条件时 如何防止 file get contents 创建空文件 不管怎样 都会创建一个空文件 这会导致后续调用不同方法中的 getimagesize 失败 问题是 当我设置代码时 第一次调用它时将确定保存图像或显示
  • PHP:preg_match_all首先匹配内括号?

    在 PHP 中 我有带有嵌套括号的字符串 bar foo test abc def bar foo 我需要一个与内部括号对匹配的正则表达式first 所以顺序是preg match all发现匹配的括号对应该是 abc def test a
  • 将 Zapier 自定义请求 Webhook 与 JSON Web 令牌结合使用

    我需要访问使用 JSON Web 令牌作为身份验证方法的 API 有没有一种好方法可以使用 python 代码步骤创建此令牌 然后将该令牌作为标头添加到自定义请求 Webhook 步骤中 我使用 API 进行身份验证的经验是使用简单的API
  • 我什么时候应该在sql server中使用表变量和临时表?

    我正在表变量中了解更多详细信息 它说临时表总是在磁盘上 而表变量在内存中 也就是说 表变量的性能比临时表更好 因为表变量比临时表使用更少的IO操作 但有时 如果表变量中的记录太多而无法容纳在内存中 则该表变量将像临时表一样放在磁盘上 但我不
  • 使用C#设置全局热键

    I need to capture a key press when my program is not in focus i e Ctrl Alt J and trigger an event in my program 到目前为止 我发
  • LINQ 查找大于/小于输入的最接近的数字

    假设我有这个号码列表 List
  • NTFS 提供哪些可靠性保证?

    我想知道 NTFS 为存储在其上的数据提供了什么样的可靠性保证 例如 假设我正在打开一个文件 追加到末尾 然后关闭它 并且在此操作过程中随机时间断电 我能找到完全损坏的文件吗 我这么问是因为我刚刚遇到了系统锁定 并发现其中两个正在附加的文件
  • Docker - 无法准备上下文:无法评估 Dockerfile 路径中的符号链接:GetFileAttributesEx

    我今天刚刚下载了适用于 Windows 10 64 位的 Docker Toolbox 我正在浏览教程 我在尝试使用 Dockerfile 构建映像时收到以下错误 Steps 推出 Docker 快速入门终端 创建后测试docker 按照
  • “自动打包存储库以获得最佳性能”是什么意思?

    我的 git 存储库有问题 在过去的几天里 每当我向服务器推送时 我都会收到此消息 自动打包存储库以获得最佳性能 并且它似乎不会消失并返回 shell 我还尝试签出一个新分支 然后对我之前的分支进行变基 然后执行git gc删除未使用的历史
  • 如何确定 NSDate 是否是工作日?

    我怎样才能知道是否NSDate是工作日吗 也就是说 根据用户当前的区域设置和日历设置是否是周末 所以不硬编码为周一到周五 NSCalendar has a firstWeekday财产 但这似乎只是一种表象 美国是周日 英国是周一 编辑 我
  • MySQL 分组依据/排序依据索引

    请参阅下面的查询 我应该在表上创建什么索引 以便查询将使用该索引并避免使用临时和文件排序 我尝试了许多不同的索引组合并阅读这里的建议 http mysqldba blogspot com 2008 06 how to pick indexe
  • 将 Unique-ids 传递给 Javascript 以实现水平滚动

    我正在尝试开发一个类似于 Netflix 的水平滚动界面 一切都显示并正常工作 但由于某种原因 Javascript 只滚动浏览索引页面中的第一个出版商书籍 当我尝试悬停和滚动任何其他出版商书籍时 它只会水平滚动第一出版商书籍 我知道 sc
  • 具有多个条件的 Linq where 子句

    此方法返回通用列表 但它有多个条件来获取选择 我只是用 if else if else if 来写这个 我的意思是这么多 if else 有没有更短的方法来做到这一点 谢谢 public List
  • 使用 HttpURLConnection 设置自定义标头

    我只是在做一个GET使用 Rest API 请求HttpURLConnection 我需要添加一些自定义标头 但我得到了null同时试图找回他们的价值观 Code URL url try url new URL http www examp
  • 使用指向单个值的指针作为数组

    请注意 该问题已针对 注册 变量进行了扩展 简而言之 我的问题是 这个合法的 C 代码是否合法 按照不同 ISO 9899 C 规范的标准字母 最好在标准的文字中加上 证明 int a 0 int b a 0 const int c 0 b