我写了一个简单的 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 本身的指针。
谢谢你的帮助
最佳答案
在 C 中它被称为“数组”,而不是“vector ”。
不能给数组赋值。
您已将
mul
声明为返回一个float
,但它没有返回任何内容 - 将其更改为void
。当您调用
mul
时,由于它不返回任何内容,因此您不需要o=
。只需mul(r,o)
,就可以了。数组不是指针。也就是说,在大多数情况下,数组确实会退化为指向其第一个元素的指针,包括您正在使用它的函数调用。同样,您的
float r[]、float o[]
mul
函数签名只是float *r, float *o
的语法糖。
关于c - 如何将 vector 传递给 C 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28589088/