Java中的二维数组和c语言中的二维数组的区别
2015-05-31 15:26
295 查看
我觉得,J***A的多维数组其实是数组包数组,即他们下一个数组是独立的,可以独立分配内存大小,跟C语言的数组不一样,C语言的数组无论维数是多少,他们每一维的内存大小都一样。
打个比方:
J***A的三维数组
某公司有m个工厂,这个是第一维;
每个工厂有n个仓库,这个是第二维;
每个仓库有o件库存,这是第三维;
每个工厂的仓库数量都不同,每个仓库的库存数量又都不同。
通过三重循环,事实上可以从工厂依次遍历到仓库,再遍历到库存,从而统计出该公司所有的产品仓库。这就属于多维数组。
而C语言的三维数组
某公司有m个工厂,这个是第一维;
每个工厂有n个仓库,这个是第二维;
每个仓库有o件库存,这是第三维;
每个工厂的仓库数量相同,库存相同
在C/C++中,我们定义的变量所需的空间都是分配在栈上的,而new所需的空间都是分配在堆上的
在栈上的变量必须在代码中明确指出大小,所以在C/C++中定义数组必须指定大小
而J***A中所有的变量都是引用,换个角度理解就是C++中的指针,所以在J***A中的变量都是后期分配的
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};
打个比方:
J***A的三维数组
某公司有m个工厂,这个是第一维;
每个工厂有n个仓库,这个是第二维;
每个仓库有o件库存,这是第三维;
每个工厂的仓库数量都不同,每个仓库的库存数量又都不同。
通过三重循环,事实上可以从工厂依次遍历到仓库,再遍历到库存,从而统计出该公司所有的产品仓库。这就属于多维数组。
而C语言的三维数组
某公司有m个工厂,这个是第一维;
每个工厂有n个仓库,这个是第二维;
每个仓库有o件库存,这是第三维;
每个工厂的仓库数量相同,库存相同
在C/C++中,我们定义的变量所需的空间都是分配在栈上的,而new所需的空间都是分配在堆上的
在栈上的变量必须在代码中明确指出大小,所以在C/C++中定义数组必须指定大小
而J***A中所有的变量都是引用,换个角度理解就是C++中的指针,所以在J***A中的变量都是后期分配的
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};
相关文章推荐
- 一起talk C栗子吧(第二回:C语言实例--判断闰年)
- C++中Standard Template Library(STL)入门简要概况
- WinsockPragramming(2) Client(C++版)
- WinsockPragramming(1) Server(C++版)
- 用c语言来实现井字棋
- C++的内存模型和名称空间
- C/C++中extern关键字详解
- 初学C++笔记
- c++运行时类型识别(rtti)
- c++运行时类型识别(rtti)
- WinsockPragramming(2) Client(C++版)
- C++ 学习笔记(三) 编写makefile(二)
- 嵌入式C语言中的Doxygen注释模板
- C++ lamda表达式
- WinsockPragramming(1) Server(C++版)
- 一起talk C栗子吧(第一回:C语言实例概述)
- 用C++解越南小学三年级数学题
- 那些n位数
- 黑马程序员——C语言中的指针变量初步认识
- C/C++连接MYSQL