多维数组 与 数组的数组 数组二维数组C# 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.矩形数组肯定需要确定行列2.b是数组的数组,每一项是大小不确定的3.a存完一行接着存下一行,b每项都是一个数组的引用,那些数组可以是分散的4.行列 1.a的一、二维大小都必须得申明上大小吗?是的,多维数组在初始化的时候必须同时将每一维度都初始化2.b只能声明一维的大小吗?还可以这样b[0]=new int[20];3.听说a的内部存储方式还是和一维一样,都是线性存储的,这怎么理解?那数组的数组是怎么存储?一样,不过是数组套数组而已4.a又叫矩形(矩阵?)数组? 那么是3行2列,还是3列2行(规范叫法)?这种叫法其实没什么实际意义,多维数组是多维数组,它毕竟不是表比如int[,,] a=new int[1,2,3];你说哪个是行,哪个是列 你的提问都是中国老师教你的思维方式,我不想回答你的问题,只想告诉你你整个的思维方式全部错了,所以你的问题想复杂了。多维数组的本质是一维数组,下标写法不同的语法糖。比如int[,] arr = new int[3,2];其实就是int[6],只不过编译器(JIT)维护了每一维的长度,当你用arr[1,1]访问的时候,其实就是arr[1*3+1];数组的数组和其他什么的数组是一样的,只是它的元素是一个数组,仅此而已,而数组和其它对象,没有什么区别。 谢谢! 我在CSDN上提问的都是自己琢磨的,并不是老师教的,学校没有教这些。2个的不同点和我总结的都是琢磨出来的,所以我大多都是来求证的,CSDN大牛多嘛可能问题的描述上会显得比较呆板,但是我这样提问的原因就是想问原理或者说本质的东西。比如你说的“只不过编译器(JIT)维护了每一维的长度,当你用arr[1,1]访问的时候,其实就是arr[1*3+1];” 这个对于我来说是最有用的 对,我都是常常有问题没办法只得上网搜,这里搜点那里搜点,MSDN又写得不太详细。最后总结下来几点,再到CSDN求证来的。我去看看 关于byte的转换 C# datagridview 如何双击里边数据时,把这行数据显示到本窗体上的另一个datagridview上。 VS2005下如何调试多线程的C#程序? c#数据集添加 vs2005里自带的报表怎么用啊,能不能给点代码 C#对象和引用之间的关系 C#中有像C++中的宏一样的机制吗? 一个小问题 关于设计时的问题,请有控件开发经验的朋友来谈谈 关于菜单合并问题 求助:这段小 c++ 程序,怎么改为 C# 的,谢谢2! 问题没解决,再来一贴,c#多线程调用dll,数据冲突的问题。
2.b是数组的数组,每一项是大小不确定的
3.a存完一行接着存下一行,b每项都是一个数组的引用,那些数组可以是分散的
4.行列
是的,多维数组在初始化的时候必须同时将每一维度都初始化
2.b只能声明一维的大小吗?
还可以这样b[0]=new int[20];
3.听说a的内部存储方式还是和一维一样,都是线性存储的,这怎么理解?那数组的数组是怎么存储?
一样,不过是数组套数组而已
4.a又叫矩形(矩阵?)数组? 那么是3行2列,还是3列2行(规范叫法)?
这种叫法其实没什么实际意义,多维数组是多维数组,它毕竟不是表
比如int[,,] a=new int[1,2,3];你说哪个是行,哪个是列
比如int[,] arr = new int[3,2];其实就是int[6],只不过编译器(JIT)维护了每一维的长度,当你用arr[1,1]访问的时候,其实就是arr[1*3+1];数组的数组和其他什么的数组是一样的,只是它的元素是一个数组,仅此而已,而数组和其它对象,没有什么区别。
谢谢!
我在CSDN上提问的都是自己琢磨的,并不是老师教的,学校没有教这些。2个的不同点和我总结的都是琢磨出来的,所以我大多都是来求证的,CSDN大牛多嘛
可能问题的描述上会显得比较呆板,但是我这样提问的原因就是想问原理或者说本质的东西。比如你说的“只不过编译器(JIT)维护了每一维的长度,当你用arr[1,1]访问的时候,其实就是arr[1*3+1];” 这个对于我来说是最有用的
我去看看