您的位置:首页 > 编程语言 > C语言/C++

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};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: