[,] 2d 数组和 [][] 数组之间有啥功能区别吗? [复制]
Posted
技术标签:
【中文标题】[,] 2d 数组和 [][] 数组之间有啥功能区别吗? [复制]【英文标题】:Is there any functional difference between a [,] 2d array and a [][] one? [duplicate][,] 2d 数组和 [][] 数组之间有什么功能区别吗? [复制] 【发布时间】:2016-11-11 21:28:51 【问题描述】:这两个数组可以相互通信还是它们需要是相同的类型,即 [,] 只能与其他 [,] 数组通信。
或者如果我有:
char [,] 2darray =new char [2,2];
它是否可以将它的值传递给具有二维数组的方法,例如:
Shirts(char [][] sizes)
这是用于示例的伪代码,我真的只是想知道这种类型的数组调用的区别是什么以及它们是否可以相互通信。
【问题讨论】:
【参考方案1】:这两种类型是不同的。它们在内存中的表示方式不同,因此不可互换。
二维数组char m[,]
需要具有相同大小的行,并且所有行都必须存在。相比之下,数组char m[][]
的数组允许有可变长度的行,甚至是一些缺失的行。
数组数组的元素是一个数组,您可以将其作为单独的实体传递。二维数组是一个单元;它的索引器操作符需要每个维度的索引。换句话说,你可以这样做
char m[][] ...
char r[] = m[2]; // Allowed
但你不能这样做
char m[,] ...
char r[] = m[2]; // Does not compile
【讨论】:
那么其中一个是二维数组,一个是数组数组?请你说得详细一点,我想我明白你在说什么,但我不完全确定。以上是关于[,] 2d 数组和 [][] 数组之间有啥功能区别吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章