有没有一种方法可以在C的标准库中以矢量化的形式表达数组



我正在尝试输入以下数组

float array[3] = {a, b, c};

转换成一个函数,比如

3DLocation(float x, float y, float z)

作为

3DLocation(array[3])

而不是作为

3DLocation(array[0], array[1], array[2])

因此像R或Python(具有某些库(等一样被矢量化
是否有在标准库中执行此操作的方法
如果没有,是否有方法使函数只使用标准库来执行此操作
如果没有,什么库可以帮助我做到这一点
此外,是";矢量化的";我要找的术语
并且,是";express";对,或者我应该编辑我的问题说";访问";相反

在标准库中有办法做到这一点吗?

C没有Python的一元*运算符的内置模拟(一元*在C中有不同的含义,尽管在某些方面类似(。

如果没有,有没有办法让一个函数只使用标准库来实现这一点?

您可以编写一个助手函数来实现这一点:

void call_unpacked(void (*func)(float, float,float), float args[]) {
func(args[0], args[1], args[2]);
}

然后你可以随心所欲地使用它:

call_unpacked(3DLocation, array);

您也可以将call_unpacked()编写为宏,这有一些优点,或者您可以编写一个专门封装3DLocation()的函数或宏来代替通用包装器:

void 3DLocation_unpacked(float a[]) {
3DLocation(a[0], a[1], a[2]);
}

但是在标准库中没有这样的函数或宏。

如果没有,什么库可以帮助我做到这一点?

图书馆推荐请求不在这里。

此外,是";矢量化的";我要找的术语?

Python中的常用术语(因为您提到了该语言(涉及单词"的形式;打开";,如我在前面使用的。我不认为在你所说的术语上有任何跨语言的共识。

并且,是";express";对,或者我应该编辑我的问题说";访问";相反

"Express";虽然我理解你的意思,但我觉得不对"访问";更糟。就我个人而言,我倾向于坚持";打开";,改写问题的措辞以使其符合要求。

最新更新