strlen以'\0'为结束符号!!!
(超小声的:记得点赞收藏加关注呦~)
目录
一、作用
1.strlen
2.sizeof
二、代码示例实验
1.strlen实验
(1) strlen和有'\0'
代码:
#include <stdio.h>
#include <string.h>
int main()
{
char arr[] = { 'a','b','c' ,'\0'};
printf("%d", strlen(arr));
return 0;
}
运行结果:
运行结果分析:是字符串真实长度,因为有'\0'作为结束符号,所以strlen读到'\0'直接结束读取(所读长度不包含'\0')
(2)strlen和无'\0'
代码:
#include <stdio.h>
#include <string.h>
int main()
{
char arr[] = { 'a','b','c' };
printf("%d", strlen(arr));
return 0;
}
运行结果:
运行结果分析:运行结果其实是不一定的,产生“19”只是碰巧原因(虽然VS2019每次都会产生这个数),因为strlen以'\0'为结束符号,没有'\0'就说明没结束,strlen会接着向后读取(这时候应该是随机读取)直到读到'\0',因为后面是随机读取,所以我们也不知道什么时候读取到'\0'所以读到的长度不一定
2.sizeof实验
(1)sizeof和有'\0'
代码:
#include <stdio.h>
int main()
{
char arr1[] = { 'a','b','c' ,'\0'};
printf("%d", sizeof(arr));
return 0;
}
运行结果:
运行结果分析:每个char类型占1个字节,char类型的arr1数组有4个元素,每个元素占1字节,所以所占空间为4字节
(2)sizeof和无'\0'
代码:
#include <stdio.h>
int main()
{
char arr2[] = { 'a','b','c' };
printf("%d", sizeof(arr));
return 0;
}
运行结果:
运行结果分析:sizeof不以'\0'为结束符号,依然是因为每个char类型占1个字节,char类型的arr2数组有3个元素,每个元素占1字节,所以所占空间为3字节