用递归的方式求字符串长度。

news/2024/11/8 17:06:10/

咱们先来看看用常用的方法怎么求字符串的长度吧!其实很简单就是不停的看下一个元素是不是\0,因为一个字符串的结尾都有一个\0,如果不是就加一就好了。写成代码就是下面:这个代码用到了中间变量。

#include"stdio.h"
// 实现一个字符串中字符数量统计函数,其中不许使用临时变量?int my_strled(char *str) {int count = 0;while (*str != '\0') {count++;str++;}return count;
}int main() {char arr[] = "hello word!";printf("%d ", my_strled(arr));return 0;
}

如果不用临时变量要怎么实现这个统计功能呢?那就要用递归来实现这个功能了。代码如下:

// 用递归的写法来完成
int my_strled(char * str) {if (*str != '\0') {return 1 + my_strled(1 + str);}else {return 0;}
}int main() {char arr[] = "hello word!";printf("%d ", my_strled(arr));return 0;
}

接下来画图来看看具体的实现过程:

 需要注意的就是主函数调用子函数时传入的数组是数组首元素的地址值,每次都给地址加一,就是下一个地址了,判断这个地址中的值是不是我们想要的。这个程序还是很绕的,不过理解了就好了,也就那么回事了。特此记录一下,防止时间一久自己就忘了。


http://www.ppmy.cn/news/83191.html

相关文章

rttread-nano 使用记录:rt_kprintf函数格式化打印无法左对齐

rttread-nano 使用记录:rt_kprintf函数格式化打印无法左对齐 今天用rt_kprintf函数打印输出一个表格,为了表格好看每一列我都使用格式化参数-负号符号设置为了左对齐,但是发现无法打印,也无法打印浮点数,换成微库的pri…

华顺信安 白帽汇安全研究院二面复盘

华顺信安 白帽汇安全研究院二面复盘 1.SQL注入原理讲讲2.SQL注入分类3.在绿盟通过扫描测试发现公司核心应用0day,这个经历你能讲讲吗4.写POC的经历,详细讲讲5.有没有写过什么最新漏洞的POC,当时怎么写的6. 对于一个新的POC上线,你们公司的流程是怎样的?7.你们新上线的POC是…

实战TCP三次握手

开篇 在几乎所有的后端开发面试题中,TCP三次握手绝对是最被面试官青睐的题目之一。但是这个东西,平时开发中看不见,摸不着,对于很多人来说,是纯理论的知识,玄之又玄。但是为了应对面试,又不得不…

蓝牙资讯|智能家居标准Matter 1.1 发布,智能家居产品兼容更丰富

据“CSA 连接标准联盟”官方微信号,Matter 1.1 版本已发布,“1.1 版本带来的更新使设备制造商和开发者上手更容易、产品获取认证更方便,也让产品能更快地交付给用户。该版本还为电池供电设备提供了更大支持,而这类设备涉及多种类型…

C++ 知识点总结 面经

总结C面试常问的知识点总结 注意事项 1.不要着急,先想一下,组织语言 2.对简单问题回答要有自己的理解,把细节做好 3.对于相对复杂的问题,整理好逻辑思路,以及问题大致描述的顺序。需要跟面试官沟通,不要自…

CNNs:ZFNet之基于AlexNet特征可视化实验分析

CNNs:ZFNet之基于AlexNet特征可视化实验分析 导言基于AlexNet网络的实验分析实验一:不同卷积层特征提取分析实验二:不同卷积层提取特征收敛分析 ZFNet网络介绍基于ZFNet网络的实验分析实验三:针对AlexNet特征提取改善可视化实验四:特征不变性…

springboot的一些延伸问题

Spring Boot项目如何热部署? 这可以使用 DEV 工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat 将重新启动。 Spring Boot 有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。…

【Python psycopg2】零基础也能轻松掌握的学习路线与参考资料

Python psycopg2是一个Python库,在Python中提供了一个连接PostgreSQL数据库的接口。它可以让Python应用程序和PostgreSQL数据库之间进行通信和数据传输。学习Python psycopg2的路线和教程可以在查阅资料和实践中快速入门。 一、学习前置知识 学习Python psycopg2需…