C语言 如何在函数中增加指针位置?



我试图创建一些函数来处理向量和矩阵操作。向量和函数按预期工作,但点积函数总是返回零。我做错了什么?

而且,我不确定这是否是处理问题的最好方法。我正在创建一个用于非线性优化的脚本。我的想法是为每次迭代中重用的辅助标量、向量和矩阵分配内存。这些函数都是void类型的,这样我就可以跟踪程序中创建的所有变量。

#include <stdio.h>
void dot (const double *v_1, const double *v_2, double s_out)
{
s_out = v_1[0] * v_2[0] + v_1[1] * v_2[1];
}
void sum (double *v_1, double *v_2, double *v_out)
{
v_out[0] = v_1[0] + v_2[0];
v_out[1] = v_1[1] + v_2[1];
}
int main ()
{
double *r;
double *t;
r = malloc(sizeof(double)*2); 
t = malloc(sizeof(double)*2); 
r[0] = 1; r[1] = 2;
double rho_new = 0;
dot (r, r, rho_new);
printf("rho_new = %lfn", rho_new);
sum (r, r, t);
printf("t = %lf %lfn", t[0], t[1]);
}

从函数返回值的两个选项

#include <stdio.h>
double dot (const double *v_1, const double *v_2)
{
return v_1[0] * v_2[0] + v_1[1] * v_2[1];
}
void sum (double *v_1, double *v_2, double *v_out)
{
v_out[0] = v_1[0] + v_2[0];
v_out[1] = v_1[1] + v_2[1];
}
int main ()
{
double *r;
double *t;
r = malloc(sizeof(double)*2); 
t = malloc(sizeof(double)*2); 
r[0] = 1; r[1] = 2;
double rho_new = 0;
rho_new = dot(r, r, rho_new);
printf("rho_new = %lfn", rho_new);
sum (r, r, t);
printf("t = %lf %lfn", t[0], t[1]);
}

#include <stdio.h>
void dot (const double *v_1, const double *v_2, double *s_out)
{
*s_out = v_1[0] * v_2[0] + v_1[1] * v_2[1];
}
void sum (double *v_1, double *v_2, double *v_out)
{
v_out[0] = v_1[0] + v_2[0];
v_out[1] = v_1[1] + v_2[1];
}
int main ()
{
double *r;
double *t;
r = malloc(sizeof(double)*2); 
t = malloc(sizeof(double)*2); 
r[0] = 1; r[1] = 2;
double rho_new = 0;
dot (r, r, &rho_new);
printf("rho_new = %lfn", rho_new);
sum (r, r, t);
printf("t = %lf %lfn", t[0], t[1]);
}

最新更新