Java中的二维数组和c语言中的二维数组的区别
我觉得,JAVA的多维数组其实是数组包数组,即他们下一个数组是独立的,可以独立分配内存大小,跟C语言的数组不一样,C语言的数组无论维数是多少,他们每一维的内存大小都一样。
打个比方:
JAVA的三维数组
某公司有m个工厂,这个是第一维;
每个工厂有n个仓库,这个是第二维;
每个仓库有o件库存,这是第三维;
每个工厂的仓库数量都不同,每个仓库的库存数量又都不同。
通过三重循环,事实上可以从工厂依次遍历到仓库,再遍历到库存,从而统计出该公司所有的产品仓库。这就属于多维数组。
而C语言的三维数组
某公司有m个工厂,这个是第一维;
每个工厂有n个仓库,这个是第二维;
每个仓库有o件库存,这是第三维;
打个比方:
JAVA的三维数组
某公司有m个工厂,这个是第一维;
每个工厂有n个仓库,这个是第二维;
每个仓库有o件库存,这是第三维;
每个工厂的仓库数量都不同,每个仓库的库存数量又都不同。
通过三重循环,事实上可以从工厂依次遍历到仓库,再遍历到库存,从而统计出该公司所有的产品仓库。这就属于多维数组。
而C语言的三维数组
某公司有m个工厂,这个是第一维;
每个工厂有n个仓库,这个是第二维;
每个仓库有o件库存,这是第三维;
每个工厂的仓库数量相同,库存相同
在C/C++中,我们定义的变量所需的空间都是分配在栈上的,而new所需的空间都是分配在堆上的
在栈上的变量必须在代码中明确指出大小,所以在C/C++中定义数组必须指定大小
而JAVA中所有的变量都是引用,换个角度理解就是C++中的指针,所以在JAVA中的变量都是后期分配的
Java中可以这样定义数组:
int[][] arr = {{1,2,3},{4,5,6,7},{9}}; int [][] arr = {{1,2,3},{4,5,6,7},{9}}; int arr[][] = {{1,2,3},{4,5,6,7},{9}};
C语言只能这样定义数组: int arr[3]={1,2,3}; int arr2[]={1,2,3};
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 数据结构-用二维数组构造列表
- 下一篇: C/C++中二维数组和指针关系分析