# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
# include <string.h>
int main()
{
//初始化字符数组的值;
char arr[] = { 'a', 'b', 'c', 'e', 'f' };
//strlen判断字符数组的大小;
printf("%d\n", strlen(arr));
//结果:随机值
//原因:strlen(字符数组)会在数组中逐个筛查,直到找到'/0'才会停止检索;
// 而arr数组中的'/0'位置未知;
printf("%d\n", strlen(arr + 0));
//结果:随机值
//原因:strlen(arr + 0)表示数组首元素,原理同上;
printf("%d\n", strlen(*arr));
//结果:野指针
//原因:---> strlen('a') ---> strlen(97);违反strlen函数的参数要求,无法运算;
printf("%d\n", strlen(arr[1]));
//结果:野指针
//原因:同上
printf("%d\n", strlen(&arr));
//结果:随机
//原因:虽然trlen(&arr)和strlen(arr)类型不同,但是同样都是从第一个元素开始计算;
printf("%d\n", strlen(&arr + 1));
//结果:随机
//原因:同上
printf("%d\n", strlen(&arr[0] + 1));
//结果:随机值
//原因:同上
return 0;
}
09-06
8931
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
03-17
329
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)