关于交错数组和二维数组

yiranfantexi44 2013-09-19 02:45:08
想请教各位一下,每个数组的元素个数相同的交错数组和二维数组一样吗?
...全文
283 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2013-09-19
  • 打赏
  • 举报
回复
引用 4 楼 sp1234 的回复:
交错数据没有二维的概念,它就是普通的数组向量,只不过每一个数组单元是另一个数组而已。 许多语言没有二维数组,例如标准c语言,c语言的“二维数组”其实就是交错数组,而不是c#所说的二维数组。
C的二维数组其实可以视作是一维数组的语法糖 比如 x[i][j] 其实就是 x[i * 第一维长度 + j] 而更变态的是,数组本身又是指针运算的语法糖 比如 x[i] 其实就是 *(&x[0] + i) 所以居然在C中还可以这么写: i[x] 因为编译器视作 *(i + &x[0])
  • 打赏
  • 举报
回复
c#的二维数组,跟vb3(vb4、vb5、vb6)/vbs想兼容的。你可以打开Excel,用vbs for Excel(或者使用vsto方式使用c#语言)编写一段为excel工作表的一个“区域”的数据进行整体运算并且整体赋值的程序,这时候你从Range对象取得的(以及赋值的)value属性就是二维数组。 在vs/vbs中,二维数组用了20年了。c#自然要跟vb兼容。
  • 打赏
  • 举报
回复
交错数据没有二维的概念,它就是普通的数组向量,只不过每一个数组单元是另一个数组而已。 许多语言没有二维数组,例如标准c语言,c语言的“二维数组”其实就是交错数组,而不是c#所说的二维数组。
threenewbee 2013-09-19
  • 打赏
  • 举报
回复
引用 2 楼 yiranfantexi44 的回复:
[quote=引用 1 楼 caozhy 的回复:] 当然不一样,因为交错数组的第一层,保存的是数组对象的引用 正因为这样,你才可以将一个长度不同的数组传给交错数组,同时不用搬动其它元素。 而二维数组的本质和一维数组一样,连续存储,可以直接寻址。 看这个: int[][] arr1 = new int[][] { new int[] { 1, 2 }, new int[] { 3, 4 }, new int[] { 5, 6 } }; int[,] arr2 = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 } }; arr1[1] = new int[] { 1, 2, 3, 4 };
还是不明白啊,用c语言二维数组写的程序能不作改变地在C#里用交错数组完成吗?[/quote] 不建议使用交错数组,在二进制兼容性上,交错数组和二维数组不兼容,在性能上,交错数组无法直接对第二维下标的数据直接寻址,在用法上,交错数组允许不同长度的二维数组混编,且无法一次性初始化,编译器无法检查你的不正确用法。
yiranfantexi44 2013-09-19
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
当然不一样,因为交错数组的第一层,保存的是数组对象的引用 正因为这样,你才可以将一个长度不同的数组传给交错数组,同时不用搬动其它元素。 而二维数组的本质和一维数组一样,连续存储,可以直接寻址。 看这个: int[][] arr1 = new int[][] { new int[] { 1, 2 }, new int[] { 3, 4 }, new int[] { 5, 6 } }; int[,] arr2 = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 } }; arr1[1] = new int[] { 1, 2, 3, 4 };
还是不明白啊,用c语言二维数组写的程序能不作改变地在C#里用交错数组完成吗?
threenewbee 2013-09-19
  • 打赏
  • 举报
回复
当然不一样,因为交错数组的第一层,保存的是数组对象的引用 正因为这样,你才可以将一个长度不同的数组传给交错数组,同时不用搬动其它元素。 而二维数组的本质和一维数组一样,连续存储,可以直接寻址。 看这个: int[][] arr1 = new int[][] { new int[] { 1, 2 }, new int[] { 3, 4 }, new int[] { 5, 6 } }; int[,] arr2 = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 } }; arr1[1] = new int[] { 1, 2, 3, 4 };

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧