一个朋友让我用 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(使用前将#替换为@)