18

我正在 Visual Studio 2010 中调试我的 c++ 代码,并希望查看我的数组的内容,比如 Q,它是 17x17。当我插入断点并尝试调试时,我只看到变量“Q”。当我将它带到“Watch”屏幕并将其重命名为“Q,17”时,我看到了一层。

但我也想看看另一个维度。我不能写“Q,17,17”。什么是正确的命令?

谢谢...

4

5 回答 5

21

你不能,至少不能直接。

您可以做的是放入&array[0][0]内存窗口,然后调整它的大小,使列数与一行array数据匹配。

或者,您可以放入array[0],17监视窗口,然后重复它array[1],17,等等。

也许不是您要寻找的答案,而是监视窗口虽然功能强大,但无法满足您的要求。

于 2012-05-10T15:06:42.840 回答
2

如果您想以更图形化的方式查看以 2D 组织的值,您可以尝试使用Array Visualizer 扩展。它适用于小型多维数组。

它是一个免费的开源扩展,可以通过 MarketPlace 下载。它旨在在调试应用程序时显示数组。Visual Studio 2010、2012、2013和 2015有多个版本,不幸的是它似乎没有更新到 2017。

于 2018-06-13T06:23:07.520 回答
0

将数组 Q 放到全局范围内,您可以看到它的所有元素(如果它是本地数组,您可以复制到全局数组并在全局数组上操作):

int Q[17][17];
int main(){
    int x=1, y=1, z;
}

调试好,算法验证好之后,就可以随意使用本地数组了

于 2018-05-30T08:49:57.607 回答
0

提出的解决方案仅适用于一维数组。但是每行具有固定大小的二维数组(在数学中将第一个维度视为一行)可以分配为一维数组,如下所示:

int ** a = new int * [n];
int * b = new int [n*n];

a[0] = &b[0];
for (int i=1; i<n; i++)
{
    a[i] = a[i-1]+n;
}
int count=0;
for (int i=0; i<n; i++)
{
    for (int j=0; j<n; j++)
    {
        a[i][j]= rgen.randInt(-10,10);
    }
}

然后,您可以在代码中用作矩阵,并使用假设您的矩阵是 10 x 10 来a可视化。b,100

于 2015-11-23T16:44:12.833 回答
0

可以直接查看静态分配的全局内存或局部变量

我没有找到在 VS2010 中查看动态分配的二维数组的方法(只有一维)。VS2019可以,通过

double ** a;
a = (double**)malloc(5 * sizeof(double*));
a[0]=(double*)malloc(10 * sizeof(double));
...

(double(*)[10]) a[0],5(在观察窗口中添加)

图片

而这里的这个也可以 (double(**)[10])a,5

于 2021-06-29T09:39:06.097 回答