想请问一下
假设我定义一个二维数组a
a.length()和a[0].length()哪个代表行的长度,哪个代表列的长度,为什么?
c语言?C语言可以用sizeof 去获取数组长度
#include<stdio.h>
int main(void) {
int a[3][4] = {
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 }
};
int b = sizeof(a) / sizeof(a[0]);
int c = sizeof(a[0]) / sizeof(a[0][0]);
printf("%d %d", b,c);
return 0;
}
二维数组不是类,没有length()方法的
你思考一个不存在的东西,想多了
由于二维数组a的长度是一个一维数组,所以下面这段代码可以获取它的行列长度:
a.length 代表的是二维数组a的行的长度(即二维数组的第一维长度),其返回的是二维数组a中第一维的长度,即二维数组长度;
a[0].length 代表的是二维数组a的列的长度(即二维数组的第二维长度),它的含义是在二维数组a中,第一行(即第一维)中的元素数组的长度,或其他二维数组中的相应数组的长度,也就是第一行元素中第二维的长度。可以通过a[1].length、a[2].length…来获取相应的长度。
因此用数组length方法,比如a.length,可以直接获取行数。如果要获取列数,因为是二维数组,列数可以不相同,则需要指定一个固定的行(如第一行),才能用列的length来获取列数,即a[0].length。
示例代码:
// 定义二维数组 int[][] a = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // 获取行数 int row = a.length; System.out.println("row:" + row); // 输出结果为:3 // 获取列数 int col = a[0].length; System.out.println("col:" + col); // 输出结果为:3
从上面的代码可以看出,a.length返回的是3,即二维数组a的第一维长度,即二维数组的长度;a[0].length返回的是3,即二维数组a中第一行元素中第二维的长度,即二维数组a的列数。