高端品牌网站建设方案,如何开发wordpress主题,wordpress优化公司,西宁做网站君博示范大家好#xff0c;我是苏貝#xff0c;本篇博客带大家了解C语言中自定义实现strlen函数的3种方法#xff0c;如果大家觉得我写的不错的话#xff0c;可以给我一个赞#x1f44d;吗#xff0c;感谢❤️ 在自定义实现strlen函数之前#xff0c;我们简单的介绍一下strlen函… 大家好我是苏貝本篇博客带大家了解C语言中自定义实现strlen函数的3种方法如果大家觉得我写的不错的话可以给我一个赞吗感谢❤️ 在自定义实现strlen函数之前我们简单的介绍一下strlen函数。strlen的功能就是求字符串长度。它只能作用于字符串是C语言中的库函数使用时要引用 string.h 这个头文件。每个字符串结尾处都隐藏有 ‘\0’ 它是字符串的结束标志所以我们在用strlen函数求字符串长度时遇见 ‘\0’ 时就停止读取字符串字符串长度为 ‘\0’ 之前的字符个数不包括 ‘\0’ 。若想更详细地了解strlen函数请点击该链接
简单介绍strlen函数之后让我们开始正文 1.计数器
这是3种方法里面最简单的一种只用将数组作为函数参数再用计数器i充当数组下标若arr[i]不是转义字符 ‘\0’ i直到为 ‘\0’ 时返回计数器i
int my_strlen(char arr[])
{int i 0;while (arr[i] ! \0){i;}return i;
}int main()
{char arr[] abcdefg;//abcdefg\0int len my_strlen(arr);printf(%d, len);return 0;
}
//72.递归不用创造临时变量
将数组作为函数实参实际上传过去的是数组首元素地址用指针接收变量str接收对str进行解引用操作找到str指向的字符若该字符为 ‘\0’ 则返回0否则返回1my_strlen(str 1)再进入my_strlen函数时str指向下一位继续上述判断。
例如若下面代码中char arr[ ]“ab”,将数组名arr作为函数实参用指针str接收此时str指向数组首元素即字符a。对指针str进行解应用stra,a! ‘\0’ 所以函数返回1my_strlen(str 1)再进行下一次递归 此时str指向下一位字符b。对指针str进行解应用strb,b! ‘\0’ 所以函数返回1my_strlen(str1)再进行下一次递归 此时str指向下一位字符 ‘\0’ 。对指针str进行解应用*str ‘\0’ 所以函数返回0,接着返回上一次递归此时str指向字符bmy_strlen(str 1) 的结果为0所以1my_strlen(str 1)的结果1并再将1返回上一次递归。此时str指向字符amy_strlen(str 1)的结果1所以1my_strlen(str 1)结果2将2作为最后的值返回。
int my_strlen(char* str)
{if (*str \0)return 0;elsereturn 1 my_strlen(str 1);
}int main()
{char arr[] abcdefg;//abcdefg\0int len my_strlen(arr);printf(%d, len);return 0;
}3.指针指针-指针的差值的绝对值是它们之间的元素个数 若想详细了解 指针-指针请点击该链接
思想只要最后指针str指向的是 ‘\0’ 指针start指向的是数组首元素a那么str - start就是字符串长度 创建指针变量start存放数组首元素地址str就是数组首元素地址再用while循环使得str最后指向 ‘\0’ 返回两指针的差值
int my_strlen(char* str)
{char* start str;while (*str ! \0){str;}return str - start;
}int main()
{char arr[] abcdefg;int len my_strlen(arr);printf(%d, len);return 0;
}好了那么本篇博客就到此结束了如果你觉得本篇博客对你有些帮助可以给个大大的赞吗感谢看到这里我们下篇博客见❤️