【C语言】深层挖掘-----sizeof与strlen,变量的生命周期,转义字符

温馨提示,早晨期间,一定不要浏览视频或小说等娱乐软件,会使脑袋混乱,影响一天的状态!新的一天开始了,那就享受当下吧~


前言

C语言,每个人都初识过,基本的语法都能会,但学完之后,又觉得自己太菜,总觉得有的深层知识点错过了,那么,今天跟随yena,看看还有哪些知识点你没有掌握呢~


1. sizeof与strlen的应用

1.1 sizeof 保留关键字,单目操作符

sizeof,注意它可不是函数,是C语言中的保留关键字,也可以认为是一种单目操作符,作用是获取数据在内存中所占用的存储空间,以字节为单位。
在这里插入图片描述
如上代码,因为sizeof不是函数,所以 printf(“%zu\n”, sizeof a);中,a可以不带括号哦。
注意,sizeof无法统计动态分配内存的大小,比如C++new出来的空间,sizeof无法统计。

1.2 strlen 函数

strlen函数用于求字符串的长度,使用需要加上头文件<string.h>
你来猜一下,下面代码的输出结果吧。
在这里插入图片描述
结果是6,22。第一个是正确的,为什么第二个数这么离谱呢?strlen函数是如何统计字符个数的呢,原来呀,strlen统计的是’\0’之前的字符个数,不包括’\0’,所以,只有遇到’\0’,它才知道字符串截止了,即’\0’是字符串截止的标志。所以如下代码,在下面的字符数组的结尾加一个’\0’就可以啦~
在这里插入图片描述

2. 变量的生命周期

2.1 局部变量

局部变脸是{}内部定义的变量,它的生命周期是,进作用域开始,出作用域结束,即它的作用域就是它所在的{}
在这里插入图片描述
如上代码,在小{}内部定义的局部变量a,出了它的作用域,a的生命周期结束。因此,在小{}外打印生命周期已结束的a是非法的。

2.2 全局变量

在{}外部定义的变量为全局变量,全局变量的生命周期是:整个程序的生命周期
在这里插入图片描述
如上代码,当全局变量与局部变量名相同时,以局部变量值优先

3. 详解转义字符

在C语言中,字符有两种表示方式,一种是直接书写出来,例如’A’,一种可以用’\'后加ASCII码值表示,这种使用编码值来间接表示字符的方法为转义字符。

转义字符及释义
\? 在书写连续多个问号时使用,防止他们被解析成三字母 词,在旧的编译器中,三字母词 ‘ ??) ’会转义为一个‘ ] ’,
’ ??( ’ 会转义为’ [ ’ 。
\’ 用于表示字符常量 ’
\" 用于表示一个字符串内部的双引号
\ 用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a 警告字符,蜂鸣,不输出,会响一下
\b 退格符
\f 进纸符
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd ddd表示1~3个八进制的数字。 如: \130—>X
\xdd dd表示2个十六进制数字。 如: \x30—>0

注意:因为转义字符与ASCII码对应,ASCII码中最大能表示的数为十进制数127,故八进制最大值为’\177’—>(十进制127)
十六进制最大值为’\x7f’—>(十进制127)。

来做几道题检验一下吧
printf(“abcd\0ef\n”);
printf(“c:\test\test.c\n”);
printf(“\a”);
printf(“abc\nd\tef\n”);
printf(“%c\n”, ‘\130’);
printf(“%c\n”, ‘\x063’);
printf(“%c\n”, ‘’');
printf(“abcdef\n”);
printf(“”\n");
printf(“%d\n”, strlen(“qwer t”));
printf(“%d\n”, strlen(“c:\test\628\test.c”));

公布答案,你都做对了吗?
注意最后一道题,‘\t’ , ‘\62’ 是一个转义字符哦~
在这里插入图片描述
附ASCII码表
在这里插入图片描述


总结

本节我们回顾了sizeof与strlen,变量的生命周期,转义字符,你学会了吗?不懂的地方可以在评论区留言,觉得有用就收藏起来,时常回顾吧,有不足的地方期待大家来完善,私聊yena也可以呀~

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值