【发布时间】:2017-06-22 13:49:58
【问题描述】:
我需要在我的 c++ 代码中使用一些静态 c 库。 我有很多看起来像这样的函数(这里我使用这个库中的一个非常简单的例子来创建一个关于 z 轴的旋转矩阵和天使 alpha):
void Rz(double alpha, double r[3][3])
最后,r 应该是最终的矩阵。 我试着这样调用函数:
double alpha = 1.234;
double R[3][3] = {};
iauRz(alpha, R);
for(int i = 0; i<3; ++i){
cout << " " << R[i][0] << " " << R[i][1] << " " << R[i][2] << "\n";
}
我希望显示旋转矩阵,但这不起作用。我的结果是:
0 0 0
0 0 0
0 0 0
我如何调用函数有错误吗?我不熟悉这种 c 风格的数组...
编辑:该库提供了一些非常复杂的功能,围绕 z 轴的旋转只是一个示例。这意味着不可能使用更多 c++ 风格的库。 编辑 2:索引已更改
【问题讨论】:
-
索引在 c++ 中为 0。这些数组的元素位于索引 0、1 和 2。
-
您访问的内存超出了数组的范围:
R[i][3] -
将
R[i][1] << " " << R[i][2] << " " << R[i][3] << "\n";更改为R[i][0] << " " << R[i][1] << " " << R[i][2] << "\n"; -
你调用库函数的方式是可以的,根据函数的描述。问题出在其他地方。