初识C语言 三(字符串、转义字符、注释)

1、字符串

#include<stdio.h>
int main()
{
	'a';//字符
	"abcd";//字符串
	return 0;
}

"abcd"这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。
如何打印字符串:
图一
在这里插入图片描述

分析:char是字符类型,C语言中没有字符串类型。所以我们要引入一个数组,数组是一组同类型的元素,创建字符数组arr,方括号中的大小可写可不写,当方括号中没有写大小是,会自动根据反括号后面的内容来初始化方括号的大小。我们要如何知道方括号中的元素有多少呢?按F10调试,再按F10开始调试,调试-窗口-监视-4个监视任意选择。

图二
在这里插入图片描述
图三
在这里插入图片描述
在监视窗口中可以看到arr1有一个\0,由此可见字符串在结尾隐藏了一个\0字符。注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。

\0 的重要性
我们这里有三组数组,看图三我们打印三组数组会发现,arr1和arr2字符个数不一样,arr1比arr2多了一个\0,看图一,我们把他们打印出来会发现打印结果也不一样,arr1在打印的时候遇到隐藏的\0字符就会结束,所以打印出来的结果是abcd,而arr2在打印的时候没有遇到\0字符所以他就不会停止,我们在arr2的基础上给他加上一个\0字符就是我们的arr3,我们会发现不论是字符个数还是打印结果arr1和arr3都是一样的。

换一种方法继续验证\0的重要性
在这里插入图片描述

我们这里运用了strlen(string length)函数,这是一个求字符串长度的函数,使用这个函数的时候必须包含他的头文件头文件 string.h,不然无法运行。
看打印结果我们会发现arr1和arr3的打印结果为4,为什么不是5呢?因为在这里\0是一个结束标志,在计算字符串长度的时候不计算在内,所以是4不是5。我们会发现arr2打印出来是16,这里arr2的数组长度是一个随机值,因为当数组在计算的时候没有遇到\0结束标志符的时候会继续运行知道遇到\0才会停止。这里再一次的体现了\0的重要性!

2、转义字符

转义字符顾名思义就是转变意思。

#include <stdio.h>
int main()
{
	printf("c:\test\test.c");
	return 0;
}

打印结果为:

在这里插入图片描述
分析:因为这里\t为转移字符,所以打印路径的时候一定要用\\
在这里插入图片描述
转义字符表

转义字符释义
\?在书写连续多个问号时使用,防止他们被解析成三字母词
\'用于表示字符常量’
\"用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a警告字符,蜂鸣
\b退格符
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制的数字。 如: \130 X
\xdddd表示2个十六进制数字。 如: \x30 0

这边主要讲一下\ddd 和\xdd两个转义字符。
\ddd 和\xdd中的d分别表示八进制和十六进制。

#include <stdio.h>
int main()
{
	printf("%c\n",'\130');
	return 0;
}

打印结果:
在这里插入图片描述
分析:
我们打印的130是个八进制数,转换成十进制是88。
130(八进制)=64+23+0=88,ASCII码值中88对应的就是X。

#include <stdio.h>
int main()
{
	printf("%c\n", '\x63');
	return 0;
}

打印结果:
在这里插入图片描述
分析:
我们打印的60为十六进制数,转换成十进制是96。60(十六进制)=96+3=99,ASCII码值中99对应的就是c。
在这里插入图片描述

  • '0’对应的ASCII码值是48
  • 'A’对应的ASCII码值是65
  • 'a’对应的ASCII码值是97

我们发现大写字母和小写字母对应的值总是相差32
下面是一道笔试题
在这里插入图片描述
分析:
其中strlen函数是一个求字符串长度的函数,\t,和\62为转义字符,其中的8不是八进制,8进制的数字是0-7不包含8。

补充:
%d - 打印整型
%c - 打印字符
%s - 打印字符串
%f - 打印float类型的数据
%lf - 打印double类型的数据
%zu - 打印sizeof的返回值

3、注释

  1. 代码中有不需要的代码可以直接删除,也可以注释掉
  2. 代码中有些代码比较难懂,可以加一下注释文字
  3. 注释有两种风格:
  • C语言风格的注释 /*xxxxxx*/
    缺陷:不能嵌套注释
  • C++风格的注释 //xxxxxxxx
    可以注释一行也可以注释多行

本章到这里就结束啦,如果有哪里写的不好的地方,请指正。
如果觉得不错并且对你有帮助的话请给个三连支持一下吧!
Fighting!!!✊

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值