1) float scalar_product(float *x, float *y)
与2) float scalar_product(float x[], float y[])
相同吗?
我得到了一些包含一些向量的float a[3], b[3];
,函数应该给我标量产品。
在我的java背景下,我编写了2)
函数(在纸上),但示例解决方案使用带有指针的1)
。
所以我的问题: 它们是一样的吗?如果不是,那么差异是什么时候我应该使用哪个?
答案 0 :(得分:2)
是的,这两个版本有效地相同,因为当数组作为函数参数传递时,它们基本上会衰减到指向第一个元素的指针。
因此,将函数参数设置为指针或数组将不会发生行为更改。
相关,C11
,章节§6.7.6.3,函数声明符
参数声明为''类型''的数组应调整为''限定指针 输入'' [...]
因此,float scalar_product(float x[], float y[])
最终与float scalar_product(float *x, float *y)
相同。