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/

相关文章:

asp.net - 我第一次保存时 TinyMCE 不返回任何值

c++ - std::vector 的 Typedef 和 ostream 运算符

c++ - 在 C++ 中循环 vector<string> 的结构

c++ - 我的 vector<T>::erase 这里有什么问题?

c - 正则表达式与管道在速度方面的比较

c - 如何在 visual studio 2010 中编译 C?

c - 数组代码编译错误[c]

c - 如何在 C 中将指针转换为 double?

python - 列表和 While 循环

c - 我正在尝试将数据从 calcArea 函数传递到 calcCost 函数,但我遇到了问题