c#里怎么定义多维数组?

如题所述

假设你一维数组的大小为100
你需要把它拆分为20*5的一个二维矩阵。
不妨这样去实现:
假设一维数组的下标为x,可以把它在逻辑上转换为二维数组的下标:
m
=
x
/
5
n
=
x
%
5
比如你要找第一行第二列的元素,那在一维数组中就是a[1]
转化为二维坐标就是b[0][1]。
其实多维数组和一维数组一样,在计算机中都是用的一段连续的内存。只是他们的表现形式不一样。
另外,c里边没有动态的二维数组,第二维的大小必须指定的。
问题补充:转换成二维数组以后怎么才能用更简单的方式a[m][n]去表达呢?如果用那个表达式的话就太麻烦了,我要进行大量的操作,容易出问题。
打不出来中文直接打英文也行,我能看懂的,呵呵,谢谢啦
答:这个可以用宏来实现。举个例子说,比如你定义一个大小为100的一维数组a,然后你需要别人输入m=8,n=9(很多情况别人不可能按照你的意图来刚好用m和n整除一维数组的下表最大值,也就是说那个一维数组只需要保证足够大就可以了),然后你希望得到一个8*9的二维矩阵b[8][9]。
引用这个二维矩阵的时候,直接使用b[3][4]来引用第三行第四列的元素?
用宏定义(以下宏定义并没有上机调试,只是提供思路)
#define
b[(x)][(y)]
a[((x*m)+(y%n)]
解释一下:x*m,加入你需要b[3][4],那么就是对应一维数组第3*8+4%9=28个元素。
温馨提示:内容为网友见解,仅供参考
无其他回答

c#里怎么定义多维数组?
假设一维数组的下标为x,可以把它在逻辑上转换为二维数组的下标:m = x \/ 5 n = x 5 比如你要找第一行第二列的元素,那在一维数组中就是a[1]转化为二维坐标就是b[0][1]。其实多维数组和一维数组一样,在计算机中都是用的一段连续的内存。只是他们的表现形式不一样。另外,c里边没有动态...

【求助】C#如何创建多维数组
int[,] array = new int[4, 2];另外,下列声明创建一个三维(4、2 和 3)数组:C int[, ,] array1 = new int[4, 2, 3];数组初始化 可以在声明数组时将其初始化,如下例所示:C int[,] array2D = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };...

c#怎样定义数组
在C#中定义数组的基本语法是声明数组的变量类型,然后指定数组的名称和长度。下面是定义数组的 答案:在C#中定义数组的基本语法如下:1. 定义一维数组:`数据类型[] 数组名 = new 数据类型[数组大小];`2. 定义多维数组:`数据类型[][] 数组名 = new 数据类型[维度大小1,维度大小2,...,维度大小...

如何用C#语言定义数组
一维数组:int []arr=new arr[];二维数组:int [][]arr=new arr[][];多维数组:int [n]arr=new arr[]{};

C#中如何定义string数组?
C#中定义string数组方法:1、定义一维数组 string[] parm=new string[]{"chinese","english","japan"};2、一维字符串数组,如果提供了初始值设定项,则还可以省略 new 运算符 string[] par3={"chinese","english","japan"};

c#不定长数组如何定义?
在C#中,数组的长度可以根据需要进行定义,分为一维和多维两种情况。首先,一维数组有不定长和定长两种形式。不定长的一维整数数组可以这样定义:`int[]mf1=newint[6];`,这表示一个包含6个元素的数组,可以后续逐个赋值。而定长的一维数组,如`int[]mf2=newint[6]{1,2,3,4,5,6};`,明确...

用C#读取txt文件,并建立多维数组
fs.Close(); fs.Dispose(); Console.ReadLine(); 读取E盘下面a.txt的内容,先读取到res字符串中,这个我还没有查看有没有直接读取到数组中的,所以下面处理数据的时候用了split来分割,获取具体的值,然后赋值到二维结果数组中。仅供参考。

C#怎么创建一个3维数组啊?
第一种:传统三维数组(矩形) :定义(+实例化):int array[,,] = new int[5,5,5];使用:array[i,j,k] = a;a = array[i,j,k];第二种:交错数组(非矩形)定义:int[][][] array = null;创建 第一维:array = new int[5][][];第二维:array[0] = new int[6][];arr...

c#不定长数组如何定义
C#没有不定长数组这种东西,一般建议用Llist泛型,当你需要里再转成数组就行了,形如 List<int> list = new List<int>();list.Add(3);list.Add(9);int[] arr = list.ToArray();

在c#中,多维数组有两种类型,分别是
一维,多维。一维数组就是比如inta[3],a就是一维数组,而指针就似乎比如int*a=new int[3]();用法其实一样,但是用指针的话就可以随时删除内存,而数组不行。并且,如果数组当做函数参数传递,会自动退化为指针。也就是传递a的地址。引用:通过给出的数组名称和这个元素在数组中的位置编号(即下标)...

相似回答
大家正在搜