【问题标题】:Visual Studio Debugger can't view arrays after they have been passed to functions将数组传递给函数后,Visual Studio 调试器无法查看数组
【发布时间】:2009-10-18 05:27:28
【问题描述】:

我有这样的功能:

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 调试器来调试这个程序。问题是,当我查看 OuterFunction 的局部变量时,我可以很好地看到数组的所有元素,但是当我查看 MyFunction 的局部变量时,我只能看到数组的第一行,并且它说它是一个矩阵[4]*,而不是一个矩阵[4][4]。当我只传递一个一维数组时,甚至会发生这种情况——我传入一个矩阵[4],然后调试器将其识别为矩阵*,并且只让我看到数组的第一个元素。是否可以解决此问题,以便我可以在调试器中看到所有数组?

【问题讨论】:

    标签: c++ visual-studio arrays debugging


    【解决方案1】:

    这可以通过使用向量的向量来解决,或者在监视窗口中设置矩阵变量,例如“matrix,4”。 ",4" 是一种告诉调试器显示 4 个元素的格式。

    【讨论】:

      【解决方案2】:

      当您将矩阵[][] 传递给函数时,实际上您只是传递了一个指针矩阵**。函数中的 C 代码不知道矩阵的大小,因此调试器也不知道。

      要使用函数或通用矩阵,您必须将维度传递给函数。

      您可以通过询问 *(matrix + n) 在调试器中查看 say matrix* 的后续值。

      但是你使用的是 C++ 而不是 C 更容易使用 C++ 的东西,比如 std::vector (如果使用 C++,你很少声明要传递的数组)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-01
        • 2014-04-03
        • 2022-06-15
        • 1970-01-01
        • 1970-01-01
        • 2014-04-05
        • 1970-01-01
        • 2023-03-31
        相关资源
        最近更新 更多