首先,strlen使可以计算字符串的长度,且只能用于字符串,计算的是\0之前的字符个数。

因为strlen是库函数,所以其头文件是string.h

#include#includeint main(){ char arr[]={"abcdef"}; char arr1[]={'a','b','c'}; int len=strlen(arr); int len2=strlen(arr1); printf("%d\n",len); printf("%d\n",len2); return 0;} 

输出结果如下:

为何arr1输出值为33?

因为arr数组中存放的是a b c d e f \0 ,而arr1中放的是a b c..\0。

strlen只有在遇到\0时才会停下来,而arr1中不知道什么时候才能遇到\0,因此输出为随机值

补充:在遇到整型的数组时,如何求数组元素个数呢?

#includeint main(){int arr[]={1,2,3,4,5,6,7,8,9};int size=sizeof(arr);int size1=sizeof(arr[0]);int len=size/size1;printf("%d",len);return 0;}

sizeof是求占空间大小的,单位为字节。

sizeof(arr)求的是数组占内存大小,而sizeof(arr[0])求的是一个元素的大小

size=40 size1=4;

因为是整型,一个元素占4个字节。