在函数参数

时间:2016-07-03 20:39:46

标签: c arrays function pointers function-parameter

1) float scalar_product(float *x, float *y)2) float scalar_product(float x[], float y[])相同吗?

我得到了一些包含一些向量的float a[3], b[3];,函数应该给我标量产品。

在我的java背景下,我编写了2)函数(在纸上),但示例解决方案使用带有指针的1)

所以我的问题: 它们是一样的吗?如果不是,那么差异是什么时候我应该使用哪个?

1 个答案:

答案 0 :(得分:2)

是的,这两个版本有效地相同,因为当数组作为函数参数传递时,它们基本上会衰减到指向第一个元素的指针。

因此,将函数参数设置为指针或数组将不会发生行为更改。

相关,C11,章节§6.7.6.3,函数声明符

  

参数声明为''类型''的数组应调整为''限定指针   输入'' [...]

因此,float scalar_product(float x[], float y[])最终与float scalar_product(float *x, float *y)相同。