Visual Studio打印范围内的阵列

时间:2010-10-27 00:28:16

标签: visual-studio c++-cli

Blob的定义如下:

unsigned char* blob=new unsigned char[64];

然后我们尝试使用即时窗口

blob+12
0x084F8854
    *blob+12: 0x75 'u'
blob+13
0x084F8855
    *blob+13: 0x11 ''
blob+14
0x084F8856
    *blob+14: 0x94 ''
blob+12,3
0x084F8854
    [0]: 0x75 'u'
    [1]: 0x0 ''
    [2]: 0x0 ''

为什么不用blob + 12,3显示blob 12的3个值?这是做什么的呢?

2 个答案:

答案 0 :(得分:3)

更一般地说,“blob,20”有效,但“blob + 0,20”不起作用。

我最好的猜测是托管表达式评估程序的错误。如果你查看MSDN,他们会详细说明这些东西是如何工作的,而这些东西是行不通的。可能是,在评估者的扭曲思想中,blob + 12构成了char类型的1元素数组,因此无法显示超出第一个元素的元素。

答案 1 :(得分:0)

语言是C ++。他定义了一个unsigned char数组并使用立即窗口观察变量值。数组名称是blob。我试过VS2008,我用char指针验证。当你说blob + 12,3 ..时,它被转换为(blob + 12)[0],(blob + 12)[1],(blob + 12)[2] ..这与blob +基本相同13,blob + 14和blob + 15很快。