c - C 中的 vector 和矩阵

标签 c vector return

我想在 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/

相关文章:

c++ - 如何实现 vector::clear()? (学习目的)

c++: std::vector of std::function 具有任意签名

vector - 在 Rust 中初始化向量的向量

c - 为什么我的用户定义函数在没有 return 语句的情况下也能工作?

html - 在C中解析XML的算法

c - 如何创建动态大小的结构数组?

c - 通过 websocket 失败的 DDP 消息

C: 如何将一个函数的返回值转发到另一个函数中?

c - 为什么 printf ("test");没有给出任何错误?

c - 为什么 inet_ntoa 总是返回错误的 IP 地址(套接字编程公司)