C知识点的总结|【读取字符串长度的函数my_strlen】

【C知识点的总结|【读取字符串长度的函数my_strlen】】
读取字符串长度的函数mylen

  • 前言
  • 1、函数strlen
  • 2、使用指针
  • 3、指针改进
  • 4、使用递归
  • 5、my_strlen函数的参数改进—常量指针
  • 总结

前言 读取字符串的长度,使用函数 strlen。这里我们写一个函数,来读取字符串的长度,本文内容主要包括:
  • 使用strlen
  • 使用指针:是常规的方法,但是要创建变量
  • 指针改进:不需要创建变量,要求高,不易掌握
  • 使用递归:不需要创建变量,要求高,不易掌握
  • 介绍常量指针—— const char* str
1、函数strlen
int main() { char arr[] = "abcd"; int len = strlen(arr); printf("%d\n", len); return 0; }

2、使用指针 字符串以字符 ‘\0’ 结尾,需要创建变量
int my_strlen(char* str) { int count = 0; //统计字符的个数,需要创建变量 while (*str != '\0') { count++; str++; } return count; } int main() { char arr[] = "abcd"; //char* str = arr; int len = my_strlen(arr); printf("%d\n", len); return 0; }

3、指针改进 使用指针,不创建变量,不需要创建变量,面试题级别,要求高,不易掌握
int my_strlen(char* str) { char* p = str; //记录首元素地址的位置 while (*p != '\0') { p++; } return p - str; //尾地址-首地址,就是字符串的长度 }

4、使用递归 递归函数,不需要创建变量,以大化小,进行分解,面试题级别,要求高,不易掌握
my_strlen("abcdef") 1+my_strlen("bcdef") 1+1+my_strlen("cdef") 1+1+1+ my_strlen("def") 1+1+1+1+ my_strlen("ef") 1 + 1 + 1 + 1 +1+my_strlen("f") 1 + 1 + 1 + 1 + 1 + 1+ my_strlen("") 1 + 1 + 1 + 1 + 1 + 1 + 0 = 6

int my_strlen(char* str) {//不需要创建变量 if (*str != '\0') return 1 + my_strlen(str+1); //递归 else return 0; }

5、my_strlen函数的参数改进—常量指针 定义常量指针,const 对 *str 的内容进行限制,字符串的内容在传参时不会发生改变,将上面的自定义函数,都换成下面的代码:
int my_strlen(const char* str)//常量指针 { }

总结 写一个函数,来读取字符串的长度,推荐掌握指针的写法。如果后面还有别的函数的写法,再进行更新。

    推荐阅读