场景
有的时候在定义二维数组时并不会赋予它行数,那么这个时候如果需要打印出整个数组,就需要行数来作为每次循环的 i 值了,这个时候应该怎么办呢?
解决
方法一:
假设行数为n,由于行数可以省略,但列数不能省,所以可以:
n = sizeof(二维数组名) / sizeof(数组类型) / 列数
方法二:
由于二维数组的每一行可以看作一个个一维数组,而且每一个一维数组的名字都是可以操作的,所以通过用总的二维数组内存除以单个一维数组的内存,就求出了一共有几个一维数组,即几行:
n = sizeof(二维数组名) / sizeof(单个一维数组名)
列数的求法就是用二维数组一行所占的内存除以单个元素所占的内存
实例
char ch6[][7] = {"Apple","Orange","Grape","Pear","Peach"};
int a,b;
//计算二维数组的行数
a = sizeof(ch6) / sizeof(char) / 7;
b = sizeof(ch6) / sizeof(ch6[0]);
printf("a为%d\n",a);
printf("b为%d\n",b);
//计算二维数组的列数
c = sizeof(ch6[0]) / sizeof(char);
printf("c为%d\n",c);
输出结果
a为5
b为5