在 C 语言中,并没有提供可以直接获取数组长度的函数,不过我们可以使用 “曲线救国” 的方式来实现,也就是使用之前介绍的 sizeof() 函数。
示例:C 获取数组长度
#include <stdio.h>
int main(void)
{
int arr[5] = {10, 20, 30, 40, 50};
int length = sizeof(arr) / sizeof(arr[0]);
printf("%d", length);
return 0;
}输出结果如下:
5分析:
一个数组可以看成是由很多个变量组成的,但数组自己本身也可以看成是一个变量,所以我们可以使用 sizeof(arr) 来获取整个数组所占用的字节数。
sizeof(arr[0]) 表示获取数组第 1 个元素占用的字节数。由于数组所有元素的数据类型都是相同的,sizeof(arr[0]) 就相当于获取任意一个元素占用的字节数。sizeof(arr) / sizeof(arr[0]) 表示将 “数组总字节数” 除以 “一个元素占的字节数”,这样就可以获取数组的元素个数了(即数组的长度)。
可能小伙伴们一眼就知道数组元素的类型是 int,然后会写出下面这样的代码。
int length = sizeof(arr) / sizeof(int);其实上面这种方式也是可行的,但是它有一个很大的缺点,那就是如果将 int 变成其他类型(如 float、char)等,此时我们还要手动将 int 改成其他类型。但是如果使用下面这种方式,不管是数组元素是什么类型,都可以自动计算出数组的长度。
int length = sizeof(arr) / sizeof(arr[0]);对于整型数组和浮点型数组,我们一般是使用上面这种方式来获取数组的长度。而对于字符数组来说,我们可以使用 C 语言自带的 strlen() 函数来实现。
