通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

JAVA和C语言多维数组的实质是什么有什么区别

JAVA和C语言多维数组的实质是c数组连续分布,java数组到处分布。区别是java的数组其实是一个对象,因为其中不只是包含数据信息,还包括数组的长度等其他信息。

一、JAVA和C语言多维数组

实质是c数组连续分布,java数组到处分布。

区别是java的数组其实是一个对象,因为其中不只是包含数据信息,还包括数组的长度等其他信息。举个简单的例子,c语言中,int a[5],要用for循环来为每个数组元素赋值,只能for(i=0;i<5;i++) scanf("%d",&a[i]);而在java中,可以这样,int[] a=new int[5],for(i=0;i<a.length;i++) system.out.println(a[i])。

c语言中创建数组

int a1[N][M];

与下面这样不同

int **a2 = (int**)malloc(N*sizeof(int*));

for(int i=0;i<N;++i)

a2[i] = (int*)malloc(M*sizeof(int));

两者都为数组a分配了N*M*sizeof(int)的空间。

不同的是前者是连续的空间,后者是不连续的;

且a1是数组常量,a2是一个指向某个二维数组的指针,故a1只读,a2可以改变。

这样也就造成了c语言中直接创建的多维数组(前者)每个维度的大小不能改变。


java中创建数组

int[][] a1 = new int[N][M];

可以理解为上述c语言中的

int **a2 = (int**)malloc(N*sizeof(int*));

for(int i=0;i<N;++i)

a2[i] = (int*)malloc(M*sizeof(int));

java中的数组名即指针 也就是说两者等价。

而指针与常量不同的是 指针的值可以改呀。 (‵▽′)/想指哪就指哪。

所以可以创建一个新的一维数组

int[] b = new int[M+1];

将数组名(指针)a[N-1]指向数组b,即

a1[N-1] = b;

这就造成了java中的数组各个维度的大小可以不同啦_(:з」∠)_

当然c也可以达到改变维度大小的效果,比如

int **a = (int**)malloc(N*sizeof(int*));

for(int i=0;i<N;++i)

a[i] = (int*)malloc(M*sizeof(int));

int *b = (int*)malloc((M+1)*sizeof(int));

a[N-1] = b;

延伸阅读:

二、Java和C语言有什么区别

C++是混合型语言,java是面向对象语言。很多书中吧C++作为面向对象语言来讲,但是实际上C++不是纯种的面向对象语言。java是面向对象的代表。如果你听说过C#的话,那么C#是面向对象的终结。

当然这些对于初学者来说不太明了什么是面向对象、什么是面向过程。而我在这里解释也会让你更加懵懂。所以撇开什么是面向对象什么是面向过程,单单介绍他们实际应用区别:

C是一门非常干练的语言,一切采用函数的形式完成,你可以把所有需要的功能采用函数的形式完成,然后在主函数main中调用。学起来容易,几乎用三两天就可以学会。一般用来教学学习算法,数据结构等。同样这也造成了它的应用范围局限在小程序中,只能是针对小规模的东西开发:比如DOS程序,嵌入式开发等。

C++是在C语言的基础上扩展的,所以一般C++会兼容C语言库。C++是因为用C语言开发项目中会遇到很多团队合作问题,导致团队的工作效率下降。在此基础上迫切需要降低软件开发团队成员之间彼此的干扰性,使得每个工程人员的代码竟可能不影响他人。最后C++便应用而生了。C++主要是其中集成了类地概念,可以将所有的东西封装在类中,类中的私有成员不可被别人访问,这样就有效地解决了代码互干扰性。

java是汲取C++的长处而诞生的,这个语言采用完全面向对象的概念,将所有的功能封装在类中,而不像C++部分封装。由于java采用跨平台性,使得更容易被移植,在互联网要求多终端能够互相访问成为可能,这便形成了java平台今日的盛况,在互联网方面几乎无人可敌。

学习难易程度来讲C++非常难,即使有5年工作经验的C++工程师也未必能够熟练应用C++,C语言易掌握,但是应用起来难度不下于C++,因为C语言几乎是对硬件直接写代码,一般来说会使得代码非常庞大,增加了开发人员的工作量。java因为封装了很多功能,所以几乎开发效率相当高。

以上就是关于JAVA和C语言多维数组的实质是什么有什么区别的内容希望对大家有帮助。

相关文章