gpt4 book ai didi

c - 通过C函数返回指向数组的指针

转载 作者:太空宇宙 更新时间:2023-11-04 05:38:36 25 4
gpt4 key购买 nike

假设我有以下 C 函数:

double * cross_product( double vec1[3], double vec2[3] )
{
double *outvec ;

*(outvec + 0)= vec1[1]*vec2[2] - vec1[2]*vec2[1];
*(outvec + 1)= vec1[2]*vec2[0] - vec1[0]*vec2[2];
*(outvec + 2)= vec1[0]*vec2[1] - vec1[1]*vec2[0];
return outvec ;
}

为什么程序在执行阶段返回错误,而不是在编译阶段??

这个也不行

double * cross_product_2( double vec1[3], double vec2[3] )
{
double var ;
double *outvec = &var;

*(outvec + 0)= vec1[1]*vec2[2] - vec1[2]*vec2[1];
*(outvec + 1)= vec1[2]*vec2[0] - vec1[0]*vec2[2];
*(outvec + 2)= vec1[0]*vec2[1] - vec1[1]*vec2[0];
return outvec ;
// }

最佳答案

您刚刚创建了指针“outvec”,但您不知道它指向何处。我的意思是,您没有分配指针 outvec 将写入的内存。它只是试图在随机内存空间上写入数据。
您需要“告诉”指针应该从哪里开始写入数据,并为您的工作保留该空间。
正如乔尔所说,尝试使用代码来做到这一点:

double *outvec = malloc(3 * sizeof(double)); 

对不起,我的英语不好......祝你好运!

关于c - 通过C函数返回指向数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25814223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com