我有这样的功能:
MyFunction(double matrix[4][4])
{/*do stuff*/}
我从外部函数调用它(otuer函数是类的成员函数,如果重要的话):
OuterFunction()
{
double[4][4] x;
initialize(x); //this function puts the data I want in the matrix
MyFunction(x);
}
我正在尝试使用Visual Studio调试器调试此progaram。问题是,当我查看OuterFunction的本地时,我可以看到数组的所有元素都很好,但是当我查看MyFunction的本地时,我只能看到数组的第一行,并且它说这是一个矩阵[4] *而不是矩阵[4] [4]。这甚至发生在我只传递一维数组时 - 我传入矩阵[4],然后调试器将其识别为矩阵*并且只让我看到数组的第一个元素。是否可以修复此问题,以便我可以在调试器中看到所有数组?
答案 0 :(得分:0)
可以通过使用向量矢量或在监视窗口中使用矩阵变量(如“matrix,4”)来解决。 “,4”是一种告诉调试器显示4个元素的格式。
答案 1 :(得分:0)
当你将矩阵[] []传递给函数时,你实际上只传递一个指针矩阵**。函数中的C代码不知道矩阵的大小是什么,因此调试器也不知道。
要使用函数或一般规则,您必须将维度传递给函数。
您可以通过询问*(矩阵+ n)在调试器中看到say matrix *的后面的值。
但是你使用C ++而不是C更容易使用像std :: vector这样的C ++东西(如果做C ++你很少声明要传递的数组)