C语言:strlen与sizeof详解

目录

一  strlen

二  sizeof

三  例题

例一:

例二:

四  总结


一  strlen

strlen为库函数,使用时需要包含头文件<string.h>

计算字符串长度,遇到\0就会终止并返回,但不包含\0

模拟实现strlen:

int strlen(char* str)
{
	assert(str);
	int len = 0;
	while (*str++ != '\0')
	{
		len++;
	}
	return len;
}

在编译器中使用时会出现两种情况

 第一个结果为38是随机值,因为strlen函数没有识别到 ' \0 ',会继续向后计算,最后返回一个随机值。

第二个由于字符数组arr[3]存放的实际上是"a b c d e f \0",strlen识别到了' \0 ',会终止计算,并且不包含' \0 '这个字符。

注意,strlen只能用于字符串数组

当然,strlen也能直接使用

二  sizeof

sizeof为操作符,用于获取数据类型或变量所占字节数,通常用于计算内存

sizeof的几种使用格式:

 sizeof不是函数,没有明确的终止条件,在编译时就会被处理

 1).计算字符数组:

值得注意的是,sizeof会将' \0 '一同计算进去,因为像系统申请内存空间时,' \0 '也会占一个字节 

2).计算整型数组

因为一个int整型所占字节数为4,所以结果为4*6=24字节 

3).需要用sizeof计算数组长度时,可以除以该数组中某个数,即可得到长度

容易混淆:' \0 '的存在与否

"abcd":有' \0 '

{'a','b','c','d'}:没有' \0 '

三  例题

例一:

答案:C

解析:
A,B,C: acX:数组中总共有8个元素,分别是:'a','b','c','d','e','f','g','\0'

                   acY:数组中总共有7个元素,分别是:'a','b','c','d','e','f','g'

D:数组acX中有' \0 ',返回结果为7(不包含' \0 ')

      数组acY中没有' \0 ',返回结果随机。

例二:

答案:B

解析:

数组里面总共有4个元素,(3,4)为逗号表达式,取后者因此数组中元素分别为:1,2,4,5

而sizeof(arr)求的是整个数组所占空间的大小,即:4*sizeof(int)=4*4=16

因此,选择B。

四  总结

sizeof求的是数组大小(可用于多种类型)。

strlen求的是字符串长度,从首元素开始计算,遇见‘\0’停止(只用于char arr[]类型)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值