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

咱们先来看看用常用的方法怎么求字符串的长度吧!其实很简单就是不停的看下一个元素是不是\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;
}

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

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

Guess you like

Origin blog.csdn.net/xingyuncao520025/article/details/130868622