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/

相关文章:

java - 我可以附加到不同进程中的 JVM 吗?

function - Delphi XE7 Android 如何存储函数指针以便以后访问?

c++ - 指向同一类类型设计可行性的指针 vector

c - C中如何实现封装

c - 为什么 sqlite3_next_stmt() 不迭代所有语句?

c - 从管道读取大文件 C/Bash

C++ 函数说明

javascript - 如何在将来创建的元素上传递jquery函数事件

c++ - 函数不断返回相同的值

c++ - 编译错误声明我的 char vector 数组