c - 如何将 vector 传递给 C 中的函数

标签 c function vector

我写了一个简单的 C 程序,因为我刚刚开始学习如何编程。 这是 main.c 文件:

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

float mul(float r[],float o[]){
  o[0] = r[0]*11;
  o[1] = r[1]*22;
  o[2] = r[2]*33;
}
//==============================================================
int main(void){
float r[3];
r[0]=1;r[1]=2;r[2]=3;
float o[3];

o=mul(r,o);

return 0;
}`

我的目标是使用函数mul 填充 vector o;我需要保持变量的定义不变;我唯一应该修改的是函数。 当我通过键入 gcc main.c 运行它时,我收到如下错误消息:

error: incompatible types when assigning to type ‘float[3]’ from type ‘float’
o=mul(r,o);

而且我不知道如何修复它。我应该在我的小代码中更改什么?据我所知,我应该将指向 vector 的指针传递给函数,但这应该与我所做的相同,因为 vector 名称是指向 vector 本身的指针。

谢谢你的帮助

最佳答案

  1. 在 C 中它被称为“数组”,而不是“vector ”。

  2. 不能给数组赋值。

  3. 您已将 mul 声明为返回一个 float,但它没有返回任何内容 - 将其更改为 void

  4. 当您调用 mul 时,由于它不返回任何内容,因此您不需要 o=。只需mul(r,o),就可以了。

  5. 数组不是指针。也就是说,在大多数情况下,数组确实会退化为指向其第一个元素的指针,包括您正在使用它的函数调用。同样,您的 float r[]、float o[] mul 函数签名只是 float *r, float *o 的语法糖。

关于c - 如何将 vector 传递给 C 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28589088/

相关文章:

c - Rebol 3 扩展和 "handles"

android - 为多种架构生成优化的 NDK 代码?

用于传递大量参数的 C++ 设计模式

python - 如何生成矢量的3D网格? (3D网格中的每个位置都是一个向量)

c++ - 如何在 vector 的前面添加结构?

c++ - 调整容器大小时的奇怪行为

c - 使用C编程使用argc和argv参数创建子手游戏程序

c - 在 C 中获取未定义或实现定义行为的无效指针的值?

javascript - 为什么 "this"会得到不同的值?

function - 反转功能