1. 程式人生 > >遞迴和非遞迴分別實現strlen

遞迴和非遞迴分別實現strlen

執行環境  win10  vs2013

  實現求一個字串的長度

       c語言中的字串是通過字元陣列的形式來模擬的,字元陣列本質上就是一個普通的陣列,只不過每個元素的型別都是char,c風格字串,會在陣列的最後一個元素中填充"\0"作為字串的救贖標誌,雖然C語言的字串是字元陣列,但是很多情況下也可以使用一個char*指向字元陣列的第一個元素,然後用這個指標來表示字串

①非遞迴方法:

   

執行結果:

#include<stdio.h>
#include<stdlib.h>
int Strlen(char* str){
	int count = 0;  //表示字元元素個數
	//對這個指標進行解引用,指標變數儲存的通俗來說就是一個房間號,
	//解引用就是根據房間號找到房間裡的內容
	//'\0'指ASCII值為0的數字
	while (*str != '\0' ){
		++count;
		++str;
	}
	return count;
}
int main()
{
	//"hello"字串佔用6個位元組空間,但是字串長度為5沒有計算""
	printf("%d\n", Strlen("hello"));
	system("pause");
	return 0;
}

②遞迴方法:不能引進新的變數

#include<stdio.h>
#include<stdlib.h>
int Strlen(char* str){
	  //表示字元元素個數
	//對這個指標進行解引用,指標變數儲存的通俗來說就是一個房間號,
	//解引用就是根據房間號找到房間裡的內容
	//'\0'指ASCII值為0的數字
	while (*str == '\0' ){
		//str指向的是一個空的字串
		return 0;
	}
		//str指向的不是一個空字串,當前字元是字串中的第一個元素
	return  1+ Strlen(str + 1);
}
int main()
{
	//"hello"字串佔用6個位元組空間,但是字串長度為5沒有計算"\0"
	printf("%d\n", Strlen("hello"));
	system("pause");
	return 0;
}