new int(),new int[]和int *a=new int(),int *a=new int[]

new int(),new int[]和int *a=new int(),int *a=new int[]

new int[]

创建一个int型数组,数组大小是在[]中指定,

例如:

int * p = new int[3];

//申请一个动态整型数组,数组的长度为[]中的值

new int()

创建一个int型数,并且用()括号中的数据进行初始化

例如:

int *p = new int(10);

// p指向一个值为10的int数。

1 int *a=new int(120);

申请一个整型变量空间,赋初值为120,并定义一个整型指针a指向该地址空间

2 int *a=new int[120];

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

3 int *a=new int(n);

申请一个整型变量空间,赋初值为n,并定义一个整型指针a指向该地址空间

注意:

对于(1)(3)语句,肯定数组越界了。

C语言编译器不会自己检查数组越界的,要靠程序员自己注意

如果越界,一般来说同样可以修改、访问,所以你的程序输出结果不变

但是要知道:越界部分是别的部分的数据甚至代码,修改、访问可能导致程序错误

给个简单例子

#include

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

相关推荐

手机屏幕失灵探讨,手机屏幕失灵解决方案推送
365bet足球直播

手机屏幕失灵探讨,手机屏幕失灵解决方案推送

📅 07-15 👁️ 3246
武汉首例!房子“以旧换新”成功交易
365bet足球直播

武汉首例!房子“以旧换新”成功交易

📅 07-08 👁️ 396
神话传说中的十大神火,你听说过几种?幽冥鬼火第十,六丁神火第四!