遞迴和非遞迴分別實現 strlen
阿新 • • 發佈:2019-01-08
非遞迴法:
// c string 是以 \0 結尾的字元陣列
#include <stdio.h>
#include <stdlib.h>
int main() {
int strlen = 0;
char str[] = "abcd";
while (str[strlen] != '\0') {
++strlen;
}
printf("%d\n", strlen);
system("pause");
return 0;
}
C語言中的字串是以字元陣列儲存的,而且是以“\ 0”結尾的。構建一個字元陣列str []用來儲存“abcd”這個字串,用strlen表示索引,當str [strlen] !='\ 0'的時候就++ strlen,這樣就得到了字串的長度。
遞迴法:
#include <stdio.h> #include <stdlib.h> int Strlen(char str[]) { if (str[0] == '\0') { return 0; } // "abcd" => 'a' "bcd" // "bcd" => 'b' "cd" // "cd" => 'c' 'd' return Strlen(str + 1) + 1; } int main() { char str[] = "abcd"; printf("%d\n", Strlen(str)); system("pause"); return 0; }
當str [0] =='\ 0'的時候,字串長度就是0。Strlen(str + 1)+ 1這裡隱式退化成了指標,指向下一個字元的指標。