c - 在函数参数中使用指针或数组

标签 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];,其中包含一些 vector ,该函数应该给出标量积。

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

所以我的问题: 它们相同吗?如果不是,有什么区别,我应该在什么时候使用哪个?

最佳答案

是的,这两个版本实际上是相同的,因为当数组作为函数参数传递时,它们本质上会退化为指向第一个元素的指针。

因此,将函数参数设为指针或数组不会有任何行为变化。

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

A declaration of a parameter as ‘‘array of type’’ shall be adjusted to ‘‘qualified pointer to type’’ [...]

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

关于c - 在函数参数中使用指针或数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38174131/

相关文章:

javascript - 我无法从 onchange 事件中调用两个函数

c - 如何将无符号 24 位 int 转换为有符号 int 并将符号扩展为 32 位?

c++ - gnu 在目录名 vpath 中留出空格

objective-c - 按位算术和运算符

java - 寻找配对方法的时间复杂度

java - 二维多维数组是如何填充的?

c - Socket.io + C 套接字

arrays - 序列化错误

function - Powershell:返回函数中没有行的数据表

python - def 函数 python - 帮助我了解语法