c++中,int *a=new int(120)语句是什么意思??

来源:百度知道 编辑:UC知道 时间:2024/05/18 17:53:12
int n=120;

int *a=new int(120);
int *a=new int[120];
int *a=new int(n);
以上的最后三条语句是什么意思??它们之间有什么区别??
为什么它们各自经以下语句后,输出的是相同的结果???
for(int i=1; i<120; ++i)
a[i]=i;
for(i=0; i<120; ++i)
cout<<i<<": "<<a[i]<<endl;

这三个语句各自经过
for(int i=1; i<120; ++i)
a[i]=i;
for(i=0; i<120; ++i)
cout<<i<<": "<<a[i]<<endl;
结果会相同吗?
第一个语句和第三个语句情况下,程序肯定出错,数组越界。
int *a=new int(n);是申请一个int类型的内存空间,将其赋值为n,并将地址赋值给a。
而int *a=new int[120];是申请120个int类型的内存空间,将首地址赋值给a

int *a=new int(120)
表示a指向一个新分配的整数,这个整数的初始值是120

int *a=new int(120);是*a=120,int *a=new int[120];a指向一个数组大小为120。结果都是给a分配存储空间。
经过
for(int i=1; i<120; ++i)
a[i]=i;
赋值。
for(i=0; i<120; ++i)
cout<<i<<": "<<a[i]<<endl
把数组输出。

你试过吗
应该是越界出错.