C ++设置动态创建的数组的值失败

时间:2013-02-09 00:38:56

标签: c++ windows arrays

一些简单的代码似乎不起作用,我不确定原因。

enter image description here

我正在动态创建一个整数数组。这个数组的大小显示为15,但那只是因为我正在尝试调试程序。实际大小在运行时是可变的。

我浏览了几个网站,了解如何在C ++中动态创建整数数组。像this one这样的网站出现了。他们的代码看起来像我的代码:创建一个数组,for循环设置数组中每个元素的值。

但是在我的for循环运行后,我得到一个大小为0的数组。可能是什么问题?

这是一个使用Visual Studio在Windows上编译的极其基本的C ++程序。

2 个答案:

答案 0 :(得分:4)

指针与数组不同,调试器只显示第一个元素内容及其地址。您的动态数组已正确创建,您可以将array[0],... array[14]添加到watch window,您可以在内存中查看每个变量。 enter image description here

或过去的阵列存储器地址到DEBUG-> Windows-> Memory-> Memory1,你可以看到内存中的每个元素都被正确初始化

enter image description here

如果声明静态数组,调试器应该显示所有元素:

 int array2[15];

这些是基本的调试技巧,在调试应用程序时会变得很方便。

答案 1 :(得分:2)

调试器不知道它是指向数组开头的指针,它认为你有一个指向int的普通指针(因为那是array的类型:{{1} })。所以它显示了int*(数组中的第一个元素)的值,这里是int

你的代码很好;你确实已经正确分配(并初始化)了一个15 0的数组。