如何在Visual Studio 2010中查看二维数组的所有元素?

19

我正在使用Visual Studio 2010调试我的C++代码,想要查看我的数组Q的内容,该数组是17x17的。当我插入断点并尝试进行调试时,我只能看到变量"Q"。当我将其带到"监视"屏幕并将其重命名为"Q,17"时,我可以看到一级下面的内容。

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

谢谢...

5个回答

22

你不能直接这样做。

但是你可以在内存窗口中放置&array[0][0],然后调整大小以使列数匹配array数据的一行。

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

也许这不是你想要的答案,但是监视窗口虽然非常强大,但无法实现你想要的功能。


谢谢,这对我来说已经足够了。 - Emre Turkoz

2
如果您想以更直观的方式查看二维数组中的数值,可以尝试使用Array Visualizer 扩展。它可以很好地处理小型多维数组。
这是一个免费、开源的扩展程序,可以通过 MarketPlace 下载。它的设计初衷是在调试应用程序时显示数组。它适用于 Visual Studio 2010、2012、2013 和 2015 版本,但不幸的是似乎没有更新到 2017 版本。

数组可视化扩展无法与C/C++一起使用。有什么解决方案吗? - Watterry

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);
    }
}

然后您可以在代码中使用a作为矩阵,并使用例如b,100进行可视化,如果您的矩阵是10乘10。


0

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

我没有找到在VS2010中查看动态分配的二维数组的方法(只能查看一维数组)。 但是在VS2019中可以通过以下方式实现:

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

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

image

这个下面的也可以工作 (double(**)[10])a,5


0
将数组Q放到全局作用域中,这样你就可以看到它的所有元素(如果它是局部数组,你可以将其复制到全局数组中并在全局数组上进行操作):
int Q[17][17];
int main(){
    int x=1, y=1, z;
}

调试和算法验证通过后,您可以随意使用本地数组


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接