当前位置: 首页 > article >正文

如何自定义一个函数有strlen的功能(不创建新的临时变量)(c基础)

strlen函数

是求字符串的长度。

详情:简单讲解一下strlen与sizeof(c基础)-CSDN博客

如何自己定义一个函数去替代他呢?

首先既然要求字符串的长度,就要有返回值

于是用 int my__strlen()  表示返回值是int型。

然后我们要把字符串传递过去。传递字符串时是将字符串的第一个元素的地址传递过去的。

所以我们用指针来接受字符串。

int my__strlen(char* arr)

字符串结束标志是‘\0’

所以当*arr == '\0'是返回一个值,结束函数的调用。

返回值如何计算呢?

可以通过一个变量来计数。

于是 int count

#include<stdio.h>
int my__strlen(char* arr)
{
	int count = 0;

	while(*arr != '\0')
	{
		count++;
		arr++;
	}

	return count;
}
int main()
{

	/*int n = 0;
	scanf_s("%d", &n);
	print(n);*/
	char arr[] = "abc";
	
	printf("%d", my__strlen(arr));


	return 0;
}

那么如果不创建一个count是否也可以实现这功能呢?

可以。用递归的思想。

讲解

核心思路是设置初始返回值是0,如果*arr!=‘\0’,返回值加1.

#include<stdio.h>
int my__strlen(char* arr)
{
	if (*arr == '\0')
		return 0;
	if (*arr != '\0')
	{
		arr++;
		my__strlen(arr);
	}
	return ( 1 + (my__strlen(arr)));
}
int main()
{	
    char arr[] = "abc";
	
	printf("%d", my__strlen(arr));


	return 0;
}

看到这里可以去看我主页,我学过的都有,我可以写的代码,相信你也可以自己写出来。

I am 36 ,thanks for your looking.


http://www.kler.cn/a/387478.html

相关文章:

  • 稀疏视角CBCT重建的几何感知衰减学习|文献速递-基于深度学习的病灶分割与数据超分辨率
  • spring cloud 入门笔记1(RestTemplate,Consul)
  • Java API类与接口:类的转换方法与正则表达式
  • 现代Web开发:Vue 3 组件化开发实战
  • Arrays.sort与Collections.sort:深入解析Java中的排序算法
  • 模型压缩相关技术概念澄清(量化/剪枝/知识蒸馏)
  • 机器学习系列----岭回归(Ridge Regression)简介及实现
  • 【复平面】-复数相乘的几何性质
  • 从0开始深度学习(28)——序列模型
  • 在 CIFAR10 数据集上训练 Vision Transformer (ViT)
  • 解释一下Java中的异常处理机制
  • IDM扩展添加到Edge浏览器
  • 怎么给llama3.2-vision:90b模型进行量化剪枝蒸馏
  • 类加载的生命周期?
  • opencv实时弯道检测
  • 1.6K+ Star!Ichigo:一个开源的实时语音AI项目
  • 华为机试HJ29 字符串加解密
  • SDL打开YUV视频
  • AI和大模型技术在网络脆弱性扫描领域的最新进展与未来发展趋势
  • [C++ 核心编程]笔记 4.4.3 成员函数做友元
  • <<零基础C++第一期, C++入门基础>>
  • 打造完整 Transformer 编码器:逐步实现高效深度学习模块
  • 深度学习在大数据处理中的应用
  • 电子电气架构 --- 车载以太网架构安全性要求
  • Qt使用属性树(QtProPertyBrowser)时,引用报错#include “QtTreePropertyBrowser“解决方案
  • HDR视频技术之二:光电转换与 HDR 图像显示