欢迎来到代码驿站!

C代码

当前位置:首页 > 软件编程 > C代码

C++中strlen函数的三种实现方法

时间:2023-03-20 10:28:11|栏目:C代码|点击:

一、strlen函数是什么

我们经常用到strlen这个函数求字符串长度,但是它是怎么实现的呢?接下来让给我用三种方法带你们看看它是如何实现?

首先我们先来了解一下strlen这个函数,strlen 是求字符串长度的函数,它的返回值是size_t,就是unsigned int。字符串以'\0'作为结束标志,strlen函数返回的值就是在字符串中'\0'的前面出现的个数(不包含'\0')。所以我们在想strlen 是怎么实现的就可以从这里入手,从第一个字符开始找起,找到'\0'结束,计算个数。

二、strlen的三种实现方法

1、第一种方法(直接)

size_t my_strlen( const char* str)//字符串是放在常量字符串中,不能被改变,所以这里最好用用const修饰一下下啦
{
	assert(str != NULL);//p如果接收过来的是空指针,那么这里运行会崩溃的,所以这里用assert函数断言一下
	int count = 0;//计数
	while (*str != '\0')
	{
		count++;//当它的字符不等于'\0'时,计数加一
		str++;//再往下一个字符找
	}
	return count;
}

2、第二种方法(递归)

size_t my_strlen(const char* str)//字符串是放在常量字符串中,不能被改变,所以这里最好用用const修饰一下下啦
{
	assert(str != NULL);//p如果接收过来的是空指针,那么这里运行会崩溃的,所以这里用assert函数诊断一下
	 if (*str != '\0')
	 {
	  return 1+my_strlen(str+1);
	 }
	 else
	 {
		 return 0;
	 }
}

return 1+my_strlen(str+1);//这里意思是说当首字符不等于'\0'说明这个字符串至少有一个字符

举个例子:

若char[]="abc"

1+my_strlen("bc")

1+1+my_strlen("c")

1+1+1+my_strlen("")--------1+1+1+0(空字符串第一个字符就是'\0')

3、第三种方法(指针-指针)

两个指针相减,得到的是两个指针之间元素的个数。我们先用一个指针放首字符地址,然后再找到最后一个字符的地址,用最后一个字符地址减去第一个字符地址,就是他们之间元素个数。

size_t my_strlen(const char* str)//字符串是放在常量字符串中,不能被改变,所以这里最好用用const修饰一下下啦
{
	assert(str != NULL);//p如果接收过来的是空指针,那么这里运行会崩溃的,所以这里用assert函数诊断一下
	const char* start = str;//定义一个指针放字符串首字符的地址,因为*str接收的字符串为常量字符串,所以这里最好也用const修饰一下
	while (*str != '\0')
	{
		str++;
	}
	return str - start;
}

四、小结

以上就是strlen 函数的三种实现方法,我平常在用这个函数时可能很少会去关心它是怎么实现的,直接用就完了,但是了解一个函数是怎么实现的对于理解是有好处的。

上一篇:C++常见错误中英文对照表

栏    目:C代码

下一篇:没有了

本文标题:C++中strlen函数的三种实现方法

本文地址:http://www.codeinn.net/misctech/227796.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有