一、数组大小
数组的大小是一个很重要的概念,它决定了数组中能存储多少元素。在C语言中,使用如下方式定义二维数组的大小:
int arr[3][4] = { {0, 1, 2, 3} , {4, 5, 6, 7} , {8, 9, 10, 11} };
其中3表示数组的行数,4表示数组的列数,也就是说数组的总大小为3*4=12。
在TS中,定义一个二维数组也非常简单:
let arr: number[][] = [ [0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], ];
可以看到,在TS中定义二维数组的方式与C语言类似,只是将数据类型和数组名放在了一起。
二、数组的初始化
对于C语言来说,要初始化一个二维数组可以使用如下方式:
int arr[3][4] = { {0, 1, 2, 3} , {4, 5, 6, 7} , {8, 9, 10, 11} };
其中每一个{}代表一行元素,花括号内的元素用逗号分隔即可。
在TS中同样也可以采用类似的方式来初始化一个二维数组。例如:
let arr: number[][] = [ [0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], ];
上面的代码中,我们定义了一个3*4的二维数组,并将其初始化为从0到11。需要注意的是,我们在TS中定义数组时,数据类型要和数组名放在一起,并且数组的声明后要加上[]=。
三、数组的访问
在C语言中,要访问一个二维数组中的元素,可以使用如下方式:
int arr[3][4] = { {0, 1, 2, 3} , {4, 5, 6, 7} , {8, 9, 10, 11} }; int val = arr[1][2]; printf("val=%d\n", val);//输出:val=6
这段代码中,我们定义了一个3*4的二维数组,并将它的第2行第3列的元素赋值给了变量val。
在TS中同样也可以采用类似的方式来访问一个二维数组中的元素。
let arr: number[][] = [ [0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], ]; let val = arr[1][2]; console.log(val); //输出:6
四、数组的遍历
数组遍历是数组操作中最常用的操作之一。在C语言中,常用的方式包括for循环和双重for循环:
int arr[3][4] = { {0, 1, 2, 3} , {4, 5, 6, 7} , {8, 9, 10, 11} }; for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { printf("%d ", arr[i][j]); } printf("\n"); }
在TS中,同样可以使用for循环和双重for循环来遍历二维数组。
let arr: number[][] = [ [0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], ]; for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr[i].length; j++) { console.log(arr[i][j]); } }
上面的代码中,我们使用双重for循环来遍历一个二维数组,并将其中的元素输出。
五、数组复制
在C语言中,要复制一个二维数组,可以使用如下方式:
int arrSource[3][4] = { {0, 1, 2, 3} , {4, 5, 6, 7} , {8, 9, 10, 11} }; int arrTarget[3][4]; for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { arrTarget[i][j] = arrSource[i][j]; } }
在TS中同样可以采用类似的方式来复制一个二维数组。例如:
let arrSource: number[][] = [ [0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], ]; let arrTarget: number[][] = []; for (let i = 0; i < arrSource.length; i++) { arrTarget.push([]); for (let j = 0; j < arrSource[i].length; j++) { arrTarget[i][j] = arrSource[i][j]; } }
上面的代码中,我们定义了一个二维数组arrSource,并将其复制到了另一个二维数组arrTarget中。
六、多维数组
在C语言中,还可以定义多维数组,例如3维数组:
int arr[2][3][4] = { { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} }, { {12, 13, 14, 15}, {16, 17, 18, 19}, {20, 21, 22, 23} } };
在TS中,我们可以采用类似的方式定义多维数组:
let arr: number[][][] = [ [ [0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11] ], [ [12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23] ] ];
上面的代码中,我们定义了一个3维数组arr,并将其初始化为一个3*4的二维数组。
七、总结
在TS中,二维数组的操作和C语言类似,只是语法有所不同。在定义数组大小、初始化、访问、遍历、复制等方面,我们可以采用类似的方式来实现。另外还可以通过多维数组来实现更复杂的数据结构,例如3维数组。