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

#include<iostream>usingnamespacestd;intmain(){intn=120;int*a=newint(120);//(1)//int*a... #include<iostream>
using namespace std;
int main()
{
int n=120;
int *a=new int(120); //(1)
//int *a=new int[120]; //(2)
//int *a=new int(n); //(3)
for(int i=1; i<120; ++i)
a[i]=i;
for(i=0; i<120; ++i)
cout<<i<<": "<<a[i]<<endl;

return 0;
}

对于以上程序,为什么对做有标记(1)(2)(3)的三条语句注释其中的两条后进行编译链接执行三次,得到的的输出结果都是一样的?
更奇怪的是:对于(1)(3)语句,把for循环中的i<120语句改为i<m (m为任意整数,如:20,200,600等),都不会出现数组超界!!
请高手指点,最好要近可能详细点噢.

程序输出都为:
0: 0
1: 1
2: 2
3: 3
4: 4
5: 5
6: 6
7: 7
8: 8
9: 9
10: 10
11: 11
12: 12
13: 13
14: 14
15: 15
16: 16
17: 17
18: 18
19: 19
20: 20
21: 21
22: 22
23: 23
24: 24
25: 25
26: 26
27: 27
28: 28
29: 29
30: 30
31%3
输出都为:
1: 1 2: 2 3: 3 4: 4 5: 5 6: 6
8: 8 9: 9 10: 10 11: 11 12: 12 13: 13
15: 15 16: 16 17: 17 18: 18 19: 19 20: 20
22: 22 23: 23 24: 24 25: 25 26: 26 27: 27
29: 29 30: 30 31: 31 32: 32 33: 33 34: 34
36: 36 37: 37 38: 38 39: 39 40: 40 41: 41
43: 43 44: 44 45: 45 46: 46 47: 47 48: 48
50: 50 51: 51 52: 52 53: 53 54: 54 55: 55
57: 57 58: 58 59: 59 60: 60 61: 61 62: 62
64: 64 65: 65 66: 66 67: 67 68: 68 69: 69
71: 71 72: 72 73: 73 74: 74 75: 75 76: 76
78: 78 79: 79 80: 80 81: 81 82: 82 83: 83
85: 85 86: 86 87: 87 88: 88 89: 89 90: 90
92: 92 93: 93 94: 94 95: 95 96: 96 97: 97
99: 99 100: 100 101: 101 102: 102 103: 103 104: 104
106: 106 107: 107 108: 108 109: 109 110: 110 111: 111
113: 113 114: 114 115: 115 116: 116 117: 117 118: 118
展开
 我来答
百度网友84ac262
2008-09-10 · 超过26用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:0
展开全部
先说下那三条语句
int *a=new int(120);
申请一个整型变量空间,赋初值为120,并定义一个整型指针a指向该地址空间

int *a=new int[120];
申请120个整型变量空间,没有赋初值,并定义一个整型指针a指向该地址空间开始处

int *a=new int(n);
申请一个整型变量空间,赋初值为n,并定义一个整型指针a指向该地址空间

对于(1)(3)语句,肯定数组越界了。
C语言编译器不会自己检查数组越界的,要靠程序员自己注意
如果越界,一般来说同样可以修改、访问,所以你的程序输出结果不变
但是要知道:越界部分是别的部分的数据甚至代码,修改、访问可能导致程序错误
给个简单例子
#include<stdio.h>

void main() {
int iOut = -1;
int arr[4];

for ( int i = 0; i < 5; i++ ) {
arr[i] = i;
}
printf( "%d\n", iOut );
}
由于越界,变量iOut的值在for循环最后一步改变
最后输出结果为 4
百度网友b913424
2008-09-10 · TA获得超过738个赞
知道小有建树答主
回答量:1379
采纳率:0%
帮助的人:654万
展开全部
申请空间建立一个int型的长度为120数组,a 指向数组第一个元素的地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
junky163
2008-09-10 · TA获得超过348个赞
知道小有建树答主
回答量:179
采纳率:50%
帮助的人:4.6万
展开全部
int *a=new int(120); //分配一个int类型变量的memory,并初始化为120.。。并返回该memory的地址。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wansongzhi
2008-09-10 · 超过11用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:42.3万
展开全部
建立一个int型的长度为120数组
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式