嘿所以我希望这个函数返回一个包含1行和3列的数组,不用担心需要格式化。我得到的初始化错误太多了。其他评论也将不胜感激。该程序试图找到2个粒子之间的位移。这是我的代码中实现的功能。
double displacement(double x1, double x2, double y1, double y2, double z1, double z2){
double ddx, ddy, ddz, ddxf, ddyf, ddzf;
double disp[1][3] = { { 0.0 }, { 0.0 }, { 0.0 } };
ddx = x1 - x2; ddy = y1 - y2; ddz = z1 - z2;
if (ddx > L / 2){
ddxf = ddx - L;
}
else if (ddx < -L / 2){
ddxf = ddx + L;
}
else { ddxf = ddx; }
if (ddy > L / 2){
ddyf = ddy - L;
}
else if (ddy < -L / 2){
ddyf = ddy + L;
}
else { ddyf = ddy; }
if (ddz > L / 2){
ddzf = ddz - L;
}
else if (ddz < -L / 2){
ddzf = ddz + L;
}
else { ddzf = ddz; }
return disp[1][3] = { ddxf }, { ddyf }, { ddzf } };
}
答案 0 :(得分:0)
更改
double disp[1][3] = { { 0.0 }, { 0.0 }, { 0.0 } };
到
double disp[1][3] = { { 0.0 , 0.0, 0.0 } };
第一个适合disp[3][1]
。
答案 1 :(得分:0)
您无法按值返回函数中的数组。但是,您可以通过指针传递数组并在那里填写值:
#include <iostream>
double *displacement(double x1, double x2, double y1, double y2, double z1, double z2, double ret[3])
{
...
ret[0] = ddxf;
ret[1] = ddyf;
ret[2] = ddzf;
return ret;
}
int main(void)
{
double ans[3];
displacement(1.0, 2.0, -1.0, 1.0, 3.0, -1.0, ans);
std::cout << "The answer is: " << ans[0] << " " << ans[1] << " " << ans[2] << std::endl;
return 0;
}
答案 2 :(得分:0)
您无法从函数返回数组。通常,您可以返回指向数组第一个元素的指针。
return disp[1][3] = { ddxf }, { ddyf }, { ddzf } };
上面没有返回指向disp的第一个元素的指针。以下将返回一个指针:
return disp;
或
return &(disp[0]);