我想在 C 中执行 vector 运算,但我不知道如何从函数返回 vector 。我试图以这种方式生成一个 vector :
float *generate_vector()
{
static float vec[3];
return vec;
}
但是,调用这个函数使用
int main (void)
{
float vec[3];
vec = generate_vector();
}
导致错误(错误:从类型“float *”分配给类型“float[3]”时类型不兼容)。有趣的是,当使用 vec[1] = &generate_vector()[1] 仅调用 vector 的一个分量时,不会发生此错误。
你能帮我解决这个问题吗?
提前谢谢你。
最佳答案
如果您愿意,这里有一种不同的方法。它的效率有点低,但可能更容易理解(并且可能更容易在复杂程序中处理)。
在 C 中,您不能返回数组。你要么需要 malloc()
一个缓冲区(你需要跟踪它,然后 free()
它),要么你需要在函数并将指向它的附加指针传递给您的函数。
所以就存在无法返回数组的问题。但是,嘿,这是一个很好的解决方法:您实际上可以返回一个struct
包含一个数组:
#include <stdio.h>
struct vec
{
double v[3];
};
struct vec multiply_scalar(struct vec v, double scalar)
{
int i;
struct vec ret;
for (i = 0; i < 3; i++)
{
ret.v[i] = v.v[i] * scalar;
}
return ret;
}
关于c - C 中的 vector 和矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22597544/