日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C++中strlen函數的三種實現方法_C 語言

作者:菜菜不恰菜 ? 更新時間: 2022-07-01 編程語言

一、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 函數的三種實現方法,我平常在用這個函數時可能很少會去關心它是怎么實現的,直接用就完了,但是了解一個函數是怎么實現的對于理解是有好處的。

原文鏈接:https://blog.csdn.net/m0_65673419/article/details/124068429

欄目分類
最近更新