c语言的字符数组strlen的详细使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


在这里插入图片描述


前言

大家好🤞,我是一名初学者,在这里我我来分享一下自己所学到的知识

我想大家对c语言中的sizeof和strlen并不陌生😸,那么就由我来给大家详细🧐的讲解一下关于在字符数组和字符串数组中的使用方法

希望自己分享的知识可以帮助到大家😉


👻👻👻开始上课!!!!!!!!!

一、字符数组中strlen的使用详解

代码如下(示例):

#include <string.h>
int main()
{
	char arr[] = { 'a','b','c','d','f' };
	strlen(arr);//随机值
	//因为这里不知道'/0'在哪里,所以我们这里的长度时要直到遇到‘/0’才会结束。
	return 0;
}
这里的运行结果是什么呢????🧐
首先我们要对 strlen函数有一定的了解
那么strlen到底是干嘛的呢?
1.🎈strlen所作的仅仅是一个计数器的工作,
它从内存的某个位置,可以是字符串开头,中间某个位置,
甚至是某个不确定的内存区域开始扫描,
直到碰到第一个字符串结束'\0为止,然后返回计数器值,**长度不包含\0。**

2🎈.strlen函数求的是字符串的实际长度,
它求得方法是从开始到遇到第一个\0,
如果你只定义了一个字符型数组但没有给它赋初值,
这个结果是不定的,它会从首地址一直找下去,**直到遇到\0停止。**

数组内存排布:
在这里插入图片描述

1、字符数组中strlen(arr+0)

#include <string.h>
int main()
{
	char arr[] = { 'a','b','c','d','f' };
	strlen(arr+0);//随机值
	return 0;
}
这里的运行结果是什么呢????🧐
这里的结构还是随机值
因为**直到遇到\0停止。**

2、字符数组中strlen(*arr)和strlen(arr[1])

#include <string.h>
int main()
{
	char arr[] = { 'a','b','c','d','f' };
	strlen(*arr)//报错了!!! a=97   97地址  报错   语法错误不可以这样写 
	return 0;
}

这里数组名arr 不就是首元素的地址吗 *arr不就是把数组名解引用了吗,所以我们在这里传过去的
就是字符‘a’ 字符的a,a的ASCII就是97,🤡也就是相当于把97放入了strlen(97)
🧐strlen(这里要的不适应是地址吗)我们现在放入97所以就会报错
😲你们可能是这样的表情吧 ,大家明白了吗??

#include <string.h>
int main()
{
	char arr[] = { 'a','b','c','d','f' };
	srlen(arr[1])//报错  98作为地址是错误的
	return 0;
}

3、字符数组中strlen(&arr)

#include <string.h>
int main()
{
	char arr[] = { 'a','b','c','d','f' };
	strlen(&arr)//随机值 
	return 0;
}
这里的运行结果是什么呢????🧐
因为传过去的是指针

4、字符数组中strlen(&arr+1)

#include <string.h>
int main()
{
	char arr[] = { 'a','b','c','d','f' };
	strlen(&arr+1)//随机值-6
	return 0;
}

这里为什么是随机值-6呢???🎯
&arr+1:&arr表示整个数组的地址+1
这里用图片解释:
在这里插入图片描述

5、字符数组中strlen(&arr[0]+1)

#include <string.h>
int main()
{
	char arr[] = { 'a','b','c','d','f' };
	strlen(&arr[0]+1)//随机值-1
	return 0;
}

这里为什么又是随机值-1呢???😝😝
那么我们还是用图片来解释一下 ,这样可以使我们更能充分的理解
在这里插入图片描述
下课!!! 🎈🎈🎈

  • 18
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被生活无数次按在地上摩擦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值