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
    评论
### 回答1: C 与 Java语法上有很多不同之处。其中一些主要区别包括:C 是一种过程式语言,而 Java 是一种面向对象的语言;C 不支持垃圾回收,而 Java 支持自动垃圾回收;C 中的指针可以直接访问内存地址,而 Java 中的对象引用是间接的;C 中没有异常处理机制,而 Java 中有异常处理机制等等。 ### 回答2: C与Java语法上有以下几个不同之处: 1. 数据类型:C中的数据类型较为简单,包括整型、浮点型、字符型等基本类型;而Java引入了更多的复杂数据类型,如类、接口等。同时,Java还有自动内存管理机制,提供了对象的动态创建和销毁。 2. 块结构和作用域:C程序使用花括号{}来定义块,在块内定义的变量只在该块内有效;而Java的块结构更加严格,每个类都是一个作用域,方法内的变量只在该方法内有效。 3. 异常处理:Java有更为完善的异常处理机制,要求在编译期或运行期处理可能发生的异常;而C中,异常处理相对较为简单,主要依赖于错误码或者设定返回值来判断。 4. 对象和类:Java是一种面向对象的语言,所有的代码必须在类中定义,对象的创建和使用较为灵活;而C是一种过程式语言,不需要在类中定义,主要通过函数来实现代码的组织和重用。 5. 内存管理:C语言需要手动管理内存,包括分配和释放;而Java有垃圾回收机制,自动回收不再使用的对象,减少了内存泄露和野指针的问题。 总的来说,C是一种相对底层的语言,更加灵活和高效,但要求程序员自己处理很多细节;而Java是一种高级语言,提供了更多的功能和抽象,更加易于学习和使用。 ### 回答3: C语言和Java语言在语法上有一些不同之处。 1. 类型系统:C语言具有较简单的类型系统,包括基本类型(如整型、浮点型和字符型)以及数组和指针。而Java语言的类型系统更为复杂,除了基本类型,还拥有类、对象、接口和泛型等特性。 2. 内存管理:在C语言中,程序员需要手动管理内存的分配和释放,使用malloc()和free()等函数来进行操作。而Java语言通过垃圾回收机制自动管理内存,程序员无需关注内存释放问题。 3. 异常处理:C语言使用错误码来处理异常,程序员需要自己检测错误码并采取相应的处理措施。而Java语言引入了异常处理机制,使用try-catch语句块来捕获和处理异常。 4. 对象导向:Java语言是面向对象的编程语言,而C语言是过程式的编程语言Java语言支持封装、继承和多态等面向对象的特性,使得代码更加模块化和可重用。 5. 编译与运行:C语言是编译型语言,需要先将源代码编译成机器码后再执行。而Java语言是解释型语言,先将源代码转换成字节码,然后通过Java虚拟机(JVM)解释执行。 总的来说,C语言和Java语言在语法上存在一些不同之处,包括类型系统、内存管理、异常处理、对象导向和编译运行方式等方面。这些差异使得两者在使用和功能上有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值