这看起来不像一个函数。这是什么?

2023-12-10

一个朋友让我用 C 语言编写一个函数来返回数组的第 100 个元素。我对 C 不太熟悉,所以我不确定如何创建一个可以对任何类型的数组执行此操作的通用函数,所以我作弊并假设它是一个整数数组并编写了这个函数:

int GetHundredthElement(int *array) {
  return array[100 - 1];
}

(the - 1是因为数组是零索引的)

我问他如何创建一个适用于任何类型数组的函数。他告诉我有一个简单的方法可以做到这一点:

int GetHundredthElement = 100 - 1;

这个“函数”可以这样调用:

GetHundredthElement[array];

我尝试过,它有效,但对我来说看起来不像一个函数,因为它使用括号表示法,这不是用 C 编写函数调用的方式。我不太明白这段代码在做什么或如何做它正在做。这里发生了什么?


它不是一个函数,它只是利用了一个鲜为人知的 C 事实:数组索引可以互换。一切x[y]符号的真正含义是您正在访问 y 数组的第 x 个偏移量。但你也可以轻松地写y[x]在你的情况下并得到相同的结果。

99[array] and array[99]是可以互换的并且含义相同。通过将 GetHundredthElement 声明为 99,您的朋友玩了一个巧妙的把戏:)

然而,您可以编写一个通用函数来相当容易地获取数组的第一百个元素C++模板(不是 C)。

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

这看起来不像一个函数。这是什么? 的相关文章

随机推荐

  • 模态弹出窗口在打开时淡入,在关闭时淡出

    我有一个相当简单的问题 我有删除按钮 可以打开模式弹出窗口以确认或拒绝删除 我希望这些模式弹出窗口在单击时淡入 在取消时淡出 我已经尝试了几种不同的方法 到目前为止还没有运气 我只需要一个简单的解决方案 提前致谢 这是我的代码
  • Google Play 应用签名和即时应用

    相当直接的问题 有人知道 Google Play 应用签名是否支持即时应用吗 我问的原因是 输入应用程序的签名配置 或选择密钥库文件 虽然可以在测试期间使用调试配置或密钥库 但生成的数字资产链接文件将与应用程序的发布版本不兼容 如果您确实上
  • 从 MVC 控制器创建/获取 DefaultHtmlGenerator

    我正在尝试在 MVC6 控制器方法内为 Microsoft AspNet Mvc Rendering DefaultHtmlGenerator 创建 或以某种方式获取它的实例 我想在我的 asp net mvc 控制器中生成用于验证我的模型
  • 生成正则表达式可以在 Python 中匹配的值列表

    我尝试使用正则表达式作为输入 并从那里生成正则表达式匹配的所有可能值 因此 例如 如果正则表达式是 以 a 开头 以 c 结尾的三个字母单词 则代码将生成一个包含值 aac abc acc adc a1c 的列表 是否有捷径可寻 我正在使用
  • 在Google云机器学习上部署Retrained inception模型

    我设法使用通用初始模型重新训练我的特定分类模型tutorial 我现在想将其部署在谷歌云机器学习上steps 我已经设法将其导出为 MetaGraph 但我无法获得正确的输入和输出 在本地使用它 我的图表入口点是DecodeJpeg con
  • OpenXML Sax 方法可将 100K+ 行快速导出到 Excel

    我一直在尝试提高写入 xlsx 的 SAX 方法的性能 我知道 Excel 中的行数限制为 1048576 行 我只达到过这个极限几次 在大多数情况下 我只写出大约 125K 到 250K 行 一个大数据集 我尝试过的代码似乎没有那么快 因
  • 如何过滤 top_hits 指标聚合结果 [Elasticsearch]

    我想按地址分组 然后按日期获取最新地址 然后按状态过滤此结果 ex address A date 10 10 1991 status sold address A date 10 10 2016 status active address
  • 外连接 Pandas 数据框

    我正在尝试外部连接 在 df1 上 两个 pandas 数据框 以下是示例数据框 df1 Index Team 1 Team 2 Team1 Score Team2 Score 0 A B 25 56 1 B C 30 55 2 D E 3
  • 向图例添加额外的项目

    我有以下数据 trait beta se p analysis signif trait1 0 078 0 01 9 00E 13 group1 1 trait2 0 076 0 01 1 70E 11 group1 1 trait3 0
  • Amazon Cognito 将 IAM 角色分配给用户池中的组并与身份池集成

    我正在尝试使用用户池中新添加的用户组并将其与联合身份集成 我按照以下步骤操作 在用户池中创建组 其中在 IAM 中创建的角色具有单独的角色 政策 创建用户并将其添加到用户组 创建一个身份池并在下面添加该 Cognito 提供程序身份验证提供
  • 使用异步解析 Json url

    运行此代码时出现异常 我想解析 url 它是一个 json 对象数组 package com example compsci 734t import java io BufferedReader import java io InputSt
  • C# 中的随机名称生成器

    我有一个女性和男性名字的列表 然后是数组中的姓氏列表 我想做的是使用随机生成器获取这些数组中的这些名称 并根据我的调用输出随机的名字和姓氏 完成后 我将在其他类中引用该方法 而不必每次都将其写出来 这是我到目前为止的代码 private v
  • 在 PrimeFaces 中将图标从 jQuery UI 更改为 FontAwesome

    我有一个 PrimeFacesp tree我可以使用添加字体很棒的展开和折叠图标this 但之前有一个来自 PrimeFaces 的箭头图标 我无法弄清楚如何将其切换为很棒的箭头字体 fa arrow circle down and fa
  • C# 中的基本算术运算是原子的

    基本算术运算是线程安全的吗 例如 如果有 对全局变量的操作 会被不同线程修改 是否有必要在它周围加锁 例如 void MyThread can have many running instances aGlobal 或者应该是 void M
  • 如何在宏中添加前缀/后缀标识符? [复制]

    这个问题在这里已经有答案了 当使用定义函数的宏时 是否可以为函数添加前缀 macro rules my test id ident arg expr gt test fn id my test impl stringify id arg 例
  • Laravel,无法复制目录或移动目录

    目前 我在 Laravel 中遇到问题 无法使用 moveDirectory 和 copyDirectory 但是 makeDirectory 或 deleteDirectory 工作正常 代码如下
  • 如何从 Win32 上的 Perl 中杀死一个可能不存在的程序?

    我正在寻找一种方法让 Perl 杀死 Win32 上的所有 firefox exe 进程 并且如果不存在进程则不会给出错误 我目前正在使用 system taskkill F IM firefox exe 当 firefox 不存在时 会抛
  • 将 BLOB 转换为图像并显示它(ReactJS)

    MySQL 数据库保存着用户图像 我想查询该图像并将其显示在导航栏上 这是我的导航栏组件 它使用axios post向我的服务器发出请求 我尝试将 blob 转换为图像并将其存储在变量中 但我不确定为什么img onload从不火灾 exp
  • 删除特定控件的所有事件处理程序

    我正在 winForm 中编写一个应用程序 我在 from1 中有一个面板 它有很多事件处理程序 当我处理 panel1 并创建新 panel 时 先前的事件存在并触发 为了删除 panel1 事件 我尝试了下面的代码 panel1 Cli
  • 这看起来不像一个函数。这是什么?

    一个朋友让我用 C 语言编写一个函数来返回数组的第 100 个元素 我对 C 不太熟悉 所以我不确定如何创建一个可以对任何类型的数组执行此操作的通用函数 所以我作弊并假设它是一个整数数组并编写了这个函数 int GetHundredthEl