遞迴和非遞迴分別實現strlen
阿新 • • 發佈:2018-12-16
執行環境 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; }