显示出来也不像数组
代码
void main()
{
int *p;
p = new int[5];
for (int i = 0 ;i < 5 ; i++)
{
p[i] = i+5;
cout << p[i] << endl;
}
}
8 个解决方案
#1
因为int*只是一个指针,编译器不知道是指向数组还是一个int。
换成等价的吧
1.结构体
2. 数组指针
换成等价的吧
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
我的代码应该不对
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直接输入到地址值上面去,你就看到你新分配的内存变化
无论你是这句
p = new int[5];
还是
int i = 5;
p = new int[i];
不过是告诉表一起你分配了5个sizef(int)大小的空间给你而已,而你获取的到的也不过是个指向这地址的指针,你可以通过另外种方式查看,vs里面有VIEW->MEMORY窗口,你把p直接输入到地址值上面去,你就看到你新分配的内存变化
#4
哦,灰常感谢!!
但是我的是汉化过的,具体是什么窗口啊
#5
找到了,但是我只能说看不懂什么东西
#6
那就用std::vector吧。
#7
调试器显示变量的时候只查看变量的静态类型。
#8
恩,好
#1
因为int*只是一个指针,编译器不知道是指向数组还是一个int。
换成等价的吧
1.结构体
2. 数组指针
换成等价的吧
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
我的代码应该不对
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直接输入到地址值上面去,你就看到你新分配的内存变化
无论你是这句
p = new int[5];
还是
int i = 5;
p = new int[i];
不过是告诉表一起你分配了5个sizef(int)大小的空间给你而已,而你获取的到的也不过是个指向这地址的指针,你可以通过另外种方式查看,vs里面有VIEW->MEMORY窗口,你把p直接输入到地址值上面去,你就看到你新分配的内存变化
#4
哦,灰常感谢!!
但是我的是汉化过的,具体是什么窗口啊
#5
找到了,但是我只能说看不懂什么东西
#6
那就用std::vector吧。
#7
调试器显示变量的时候只查看变量的静态类型。
#8
恩,好