自己实现求字符串长度的函数(三种方法)

本文介绍了三种在C语言中计算字符串长度的方法:使用指针和计数器逐字符遍历直到遇到,通过地址相减计算元素个数,以及递归方式(效率较低)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.运用指针和计数器来实现求字符串的长度

2.运用地址的相减来计算字符串长度

3.递归方法求字符串长度,可以做到不创建临时变量


1.运用指针和计数器来实现求字符串的长度

int my_strlen(char* str)
{
    int count = 0;
    while (*str != '\0')
    {
        count++;
        str++;
    }
    return count;
}

函数的参数是指针,我们得到字符串的起始地址,然后定义一个计数器,我们知道字符串是"\0"结尾的,所以我们从起始位置往后找"\0",每找一次计数器+1,最后返回count;


2.运用地址的相减来计算字符串长度

int my_strlen(char* str)
{
    char* start = str;//将起始地址赋给start变量
    while (*str != '\0')
    {
        str++;
    }
    return (str - start);

}

由于地址与地址相减得到的结果的绝对值是元素个数,所以我们可以用末尾的地址减去起始地址就可以得到字符串长度;


3.递归方法求字符串长度,可以做到不创建临时变量

int my_strlen(char* str)
{
    if (*str != '\0')
        return 1 + my_strlen(str + 1);
    else
    {
        return 0;
    }
}

像剥洋葱一样层层递归,可以不用创建临时变量,但是运行效率慢;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值