C++动态创建数组,Java动态创建数组,两者语法上的区别

有时候我们需要根据输入值动态地创建数组,C++和java中语法大致相似,略有些不同,在此记录一下。

一、C++动态创建数组

有直接声明和new关键字创建两种。

int m, n;
cin >> m >> n;

//1.直接声明
int a1[m];
int a2[m][n];

//2.用new关键字创建

//2.1 new创建一维数组,在这里可以直接有列表进行初始化,列表中
//有多少个参数就会初始化多少个数组元素,其余的数组元素不会被初始化
int* c1 = new int[m];
int* c2 = new int[m]();         //两种方式不同见下面
int* c3 = new int[m]{1,2,3};

//2.2 new创建二维数组,其中二维数组不能用 int ** a = new int[m][n]
//需要用一下方式
int** b = new int*[m];
for (int i = 0; i < m;i++)
{
    b[i] = new int[n];
    // b[i] = new int[i+1];   这里也可创建不同大小的第二维数组
}

}


//...
//释放内存
delete [] c1;
delete [] c2;
delete [] c3;
for (int i = 0; i < m;i++)
{
    delete [] b[i];
}
delete [] b;

 1. 直接声明的方式和new关键字创建的区别:

  直接声明的方式创建动态数组时将数组分配到栈区,而new关键字则是将其分配到堆区,由程序员自己管理(详细可以看:C++内存分区

 2. 上面c1和c2声明方式的区别,就我目前的观察来看,没有什么区别,都是调用了默认的构造函数,默认构造函数和构造函数的区别,详见这里

二、Java动态创建数组

Scanner scanner = new Scanner(System.in);
int m = scanner.nextInt();
int n = scanner.nextInt();
int [] c = new int[m];
int [][] a = new int[m][n];
int [][] b = new int[m][];
for(int i=0;i<m;i++)
{
	b[i] = new int[i+1];
}

  值得注意的是java是不能直接定义来创建动态数组的,因为就连java用常量定义数组都是需要用new来定义的,如下。

int [] c = new int[5];
int d[]= {1,2};

  另外,java中没有暴露指针,所以不会有*符号,数组用[]标示,垃圾也会自动回收。

  再者,java可以采用 new int[m][n]的方法创建第二维都相同(如都是n)的二维数组,而C++不行,会产生语法错误。

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值