c++创建动态数组后调试时怎么方便观察数组所有元素的值

时间:2023-01-30 04:20:02
用的visual2010,只能看到第一个
显示出来也不像数组

代码
void main()
{
int *p;
p = new int[5];
for (int i = 0 ;i < 5 ; i++)
{
p[i] = i+5;
cout << p[i] << endl;
}
} c++创建动态数组后调试时怎么方便观察数组所有元素的值

8 个解决方案

#1


因为int*只是一个指针,编译器不知道是指向数组还是一个int。
换成等价的吧
1.结构体
int  main()
{
struct Array
{
int data[5];
};
Array* p = new Array();
for (int i = 0 ;i < 5 ; i++)
{
p->data[i] = i+5;
}
delete p;
return 0;
}

2. 数组指针
int  main()
{

int (*p)[5] = (int(*)[5])(new int[5]);
for (int i = 0 ;i < 5 ; i++)
{
(*p)[i] = i+5;
}
delete p;
return 0;
}

#2


引用 1 楼 mujiok2003 的回复:
因为int*只是一个指针,编译器不知道是指向数组还是一个int。
换成等价的吧
1.结构体C/C++ code?1234567891011121314int  main(){    struct Array    {        int data[5];    };    Array* p = new Array();    for (int i = 0 ;i < ……

我的代码应该不对
p = new int[5];
应该改成 
int i = 5;
p = new int[i];
主要是想建个未知长度的数组

#3


对于动态创建的数组,你是没法看到一个数组的形式。
无论你是这句
p = new int[5];
还是
int i = 5;
p = new int[i];
不过是告诉表一起你分配了5个sizef(int)大小的空间给你而已,而你获取的到的也不过是个指向这地址的指针,你可以通过另外种方式查看,vs里面有VIEW->MEMORY窗口,你把p直接输入到地址值上面去,你就看到你新分配的内存变化

#4


引用 3 楼 lwanttowin 的回复:
对于动态创建的数组,你是没法看到一个数组的形式。
无论你是这句
p = new int[5];
还是
int i = 5;
p = new int[i];
不过是告诉表一起你分配了5个sizef(int)大小的空间给你而已,而你获取的到的也不过是个指向这地址的指针,你可以通过另外种方式查看,vs里面有VIEW->MEMORY窗口,你把p直接输入到地址值上面去,……


哦,灰常感谢!!
但是我的是汉化过的,具体是什么窗口啊 c++创建动态数组后调试时怎么方便观察数组所有元素的值

#5


引用 3 楼 lwanttowin 的回复:
对于动态创建的数组,你是没法看到一个数组的形式。
无论你是这句
p = new int[5];
还是
int i = 5;
p = new int[i];
不过是告诉表一起你分配了5个sizef(int)大小的空间给你而已,而你获取的到的也不过是个指向这地址的指针,你可以通过另外种方式查看,vs里面有VIEW->MEMORY窗口,你把p直接输入到地址值上面去,……


找到了,但是我只能说看不懂什么东西 c++创建动态数组后调试时怎么方便观察数组所有元素的值

#6


那就用std::vector吧。

#7


调试器显示变量的时候只查看变量的静态类型。

#8


引用 7 楼 mujiok2003 的回复:
调试器显示变量的时候只查看变量的静态类型。


恩,好

#1


因为int*只是一个指针,编译器不知道是指向数组还是一个int。
换成等价的吧
1.结构体
int  main()
{
struct Array
{
int data[5];
};
Array* p = new Array();
for (int i = 0 ;i < 5 ; i++)
{
p->data[i] = i+5;
}
delete p;
return 0;
}

2. 数组指针
int  main()
{

int (*p)[5] = (int(*)[5])(new int[5]);
for (int i = 0 ;i < 5 ; i++)
{
(*p)[i] = i+5;
}
delete p;
return 0;
}

#2


引用 1 楼 mujiok2003 的回复:
因为int*只是一个指针,编译器不知道是指向数组还是一个int。
换成等价的吧
1.结构体C/C++ code?1234567891011121314int  main(){    struct Array    {        int data[5];    };    Array* p = new Array();    for (int i = 0 ;i < ……

我的代码应该不对
p = new int[5];
应该改成 
int i = 5;
p = new int[i];
主要是想建个未知长度的数组

#3


对于动态创建的数组,你是没法看到一个数组的形式。
无论你是这句
p = new int[5];
还是
int i = 5;
p = new int[i];
不过是告诉表一起你分配了5个sizef(int)大小的空间给你而已,而你获取的到的也不过是个指向这地址的指针,你可以通过另外种方式查看,vs里面有VIEW->MEMORY窗口,你把p直接输入到地址值上面去,你就看到你新分配的内存变化

#4


引用 3 楼 lwanttowin 的回复:
对于动态创建的数组,你是没法看到一个数组的形式。
无论你是这句
p = new int[5];
还是
int i = 5;
p = new int[i];
不过是告诉表一起你分配了5个sizef(int)大小的空间给你而已,而你获取的到的也不过是个指向这地址的指针,你可以通过另外种方式查看,vs里面有VIEW->MEMORY窗口,你把p直接输入到地址值上面去,……


哦,灰常感谢!!
但是我的是汉化过的,具体是什么窗口啊 c++创建动态数组后调试时怎么方便观察数组所有元素的值

#5


引用 3 楼 lwanttowin 的回复:
对于动态创建的数组,你是没法看到一个数组的形式。
无论你是这句
p = new int[5];
还是
int i = 5;
p = new int[i];
不过是告诉表一起你分配了5个sizef(int)大小的空间给你而已,而你获取的到的也不过是个指向这地址的指针,你可以通过另外种方式查看,vs里面有VIEW->MEMORY窗口,你把p直接输入到地址值上面去,……


找到了,但是我只能说看不懂什么东西 c++创建动态数组后调试时怎么方便观察数组所有元素的值

#6


那就用std::vector吧。

#7


调试器显示变量的时候只查看变量的静态类型。

#8


引用 7 楼 mujiok2003 的回复:
调试器显示变量的时候只查看变量的静态类型。


恩,好