为什么 p[1].x 打印出一个垃圾值? 是否可以将动态分配的数组初始化为给定数组?如果是,那么如何?
#include <ioStream>
using namespace std;
struct point{
int x;
int y;
};
int N;
point *p = new point[N];
int main(){
cin>>N;
for(int i=0; i<N; i++){
cin>>p[i].x>>p[i].y;
}
for(int i=0; i<N; i++){
cout<<"("<<p[i].x<<", "<<p[i].y<<")"<<endl;
}
}
最佳答案
在这两行中,您正在使用一个初始化为零的变量 (N
) 调整数组的大小。
int N;
point *p = new point[N];
因此,您将新建
一个长度为0
的数组。一旦您使用 cin>>N
,这将导致问题,因为您使用该变量循环并写入数组,这将在分配的空间之外写入。
这些类型的情况确实需要 std::array
或 std::vector
。
关于c++ - 动态分配数组中的一个值总是打印垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26220390/