VScode调试c代码时,如何显示动态分配的指针数组

通常用vscode调试c或c++代码时,如果要查看一个指针指向的值,只能看到指针表示的地址和该指针指向的值。而如果该指针是一个动态分配的数组的时候,只能看到数组第一个数的值,如图所示。

接下来我将给出解决方案。

一维数组

首先创建一个动态分配的一维数组:

int n = 10;
int *array = (int *)malloc(n*sizeof(int));
memset(array, 1, n*sizeof(int));

如果直接debug时查看array指针,并不能看到数组所有的值。

查看debug窗口,有一个watch(监视窗口)小窗口,可以添加想要查看的变量的值。

添加*(int(*)[10])array或*array@10后就可以查看array数组的所有值,也就是添加:

  • *(type(*)[size])pointer, 其中type是数组类型,size是数组长度,pointer是分配空间的数组指针。该方法将指针强制转化为一个数组。

  • *pointer@size,该方法同样可以查看数组的值。

效果如下:

多维数组

定义一个动态分配的多维数组

//等效于arr[2][3][4]
int ***arr;
int m = 2, n = 3, t = 4;
if((m > 0) && (n > 0) && (t > 0))
    {
        arr = (int***)malloc(sizeof(int)*m);
        for(i = 0;i < m;i++)
        {
            arr[i] = (int**)malloc(sizeof(int)*n);
            for (k = 0;k < n;k++)
            {
                arr[i][k] = (int*)malloc(sizeof(int)*t);
            }
        }
    }

在窗口中添加***arr@2@3@4和(int(*)[3][2][4])arr,就可以查看数组的值。

查看多维数组通项的公式为:

  • **...arr@...@size2@size1

  • *(type(*)[size1][size2][...])arr

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值