ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C语言初阶第二篇:换我心,为你心,始知C语言 从程序调试到全网最详细字符串教学来喽

2022-01-22 10:00:03  阅读:161  来源: 互联网

标签:输出 初阶 程序调试 C语言 注释 test printf 字符串 我们


换我心,为你心,始知C语言
老铁们,我们这个系列的上一篇文章讲到了变量常量,那么今天我们就继续说一说之后的一些知识框架,保证零基础也能看懂,废话不多说,我们开始吧!

第二篇

一、探讨字符串

C语言是没有字符串类型的变量的,需要使用字符串,我们只能定义字符数组来接受。
如:

int main()
{
	char arr1[] = "abc";//用字符串来初始化字符数组
	char arr2[] = { 'a','b','c' };
	return 0;
}

像上面的 “abc” 它其实在尾部隐藏了一个‘\0’,
而下面的 { ‘a’ , ‘b’ , ‘c’ } ,结尾没有 ‘\0’,那它是不是字符串呢?
我们就需要理解一下字符串:
由于字符串本质上其实就是以 ‘\0’ 作为结尾的特殊字符数组,所以定义字符串时,必须保证字符串存储的最后一个元素为 ‘\0’ ,所以下面的就不是字符串(没有结束标志)。

如下:
在这里插入图片描述
更改一下:
在这里插入图片描述
这样就又是一个字符串了,所以,字符串必须有结束标志,跟如何定义无关。

我们一会讨论断点调试的时候会提及隐藏’\0’的问题。

二、插入知识点程序调试

我们再书写代码的时候,都想要使用调试的功能,那么调试应该怎么打开呢?今天我们就说一说断点和监视的功能:
在这里插入图片描述
平常我们打断点,就可以使用快捷键ctrl+alt+b,再直接点击如图的地方,就可以显示断点的信息:
在这里插入图片描述
那么,有了断点,我们就需要明白如何调试,这里我们使用监视这个功能,但是我们也看到了,打开 调试 — 窗口 之后,没有显示监视的页面,为什么?这时候我们需要F5先运行代码(注意,断点要打了,不然没效果):
在这里插入图片描述
此时就可以看到监视了,我们来看看实际效果:
在这里插入图片描述
我们看到了字符串两种赋值方式的区别,达到了预期(如果下面一种赋值给定长度是4,那么也跟第一种赋值一样)。
(可以使用库函数strlen来查看两个的长度区别,strlen计算的是 ‘\0’ 之前的个数,我们在之后的文章里会模拟实现这个功能,想要提前了解的,可以看一看笔者写的递归的博客,有详细介绍。)

三、转义字符和注释

3.1 转义字符

转译字符,大部分人都知道常用的 ‘\0’ , ‘\n’ ,那么我们就来介绍一些不一样的,在以前的编译器种存在三字母词:
??) ---------- ] 也就是如果你输入了 ??) 那么它会转译成 ]
??( ---------- [ 如果你输入了 ??( 那么它会转译成 [
所以我们的转译字符中才会存在 ’ \ ? ’ ,就是为了防止字符被解析成三字母词
(仅做介绍,不必掌握)
那么如果我们想打印单引号 ’ 或者百分号 % 该怎么办?因为我们都知道,单引号用来扩起字母,百分号用来格式化输出,其实解决也很简单,如下面代码所示:

#include<stdio.h>
int main()
{
	printf("%c\n",'\'');
	//输出结果是  '  
	printf("%%\n");
	//输出结果是  %  
	return 0;
}

也就是说,打印单引号,我们需要斜杠转译,打印百分号,我们需要输入两个百分号。
斜杠双引号也是同理:

	printf("%c\n",'\"');
	//输出结果是  " 

那么现在应该无师自通,也理解了 “ \ \ ” 的含义了,就是防止转译,输出 " \ ",如下图: (当我们打开文件路径的时候,就应该使用 \ \ ,为了防止路径的字母被转译)

#include<stdio.h>
int main()
{
	printf("C:\ana\test\test.c\n");
	//输出结果是  C:na    est     est.c
	printf("C:\\ana\\test\\test.c\n");
	//输出结果是  C:\ana\test\test.c
	return 0;
}

结果如图:(’ \ a ’ 会有报警的声音 ,也就是蜂鸣, 可以用上面的代码试一试
在这里插入图片描述
’ \t ’ 就是水平制表符,结果也显而易见了。那么 ‘ \b ’ 有什么用?退格,用的很少,用一个代码演示一下:

	printf("abcdefg\b");
	//输出结果是abcdef,少了一个g,退格的操作

而回车(’ \r ‘)和换行(’ \n ')的区别,就在于回车是回到首部,换行是回到首部又开启下一行
那么现在,我们来看一看这非常特殊的两个:
’ \ddd ’ 和 ’ \xdd ’ ,前者表示1~3个八进制字符,后者表示2个十六进制数字

	printf("%c\n",'\130');
	//输出结果是  X  
	printf("%c\n", '\x41');
	//输出结果是  A 

这个就是ASCII编码,ASCII编码记住两个值:A ----- 65 a ----- 97 其他的字母都是顺延,比如 B ----- 98。
这个转义 ’ \130 ’ 是比较坑的,因为它转义的是八进制
那么我们为什么说上面的130是ASICII编码?我们来看一下它的八进制结果:
82+3 * 81+0 * 80 = 88 , 88对应的ASCII码就是大写的X,所以输出X。
下面的 ’ \x41 ’ 则是转义十六进制
所以下面的 \x41 就是 4 * 161 + 1 * 160 = 65,代表的字符也就是A。

那么我们这里再注意一个点,关于转译字符求字符长度:

	printf("%d\n", strlen("C:\ana:\test:\test.c"));
	//结果是 17
	printf("%d\n", strlen("C:\\ana:\\test:\\test.c"));
	//结果是 20

不多做解释。

3.2 注释

1、注释是用来解释代码
2、注释可以注释一些不需要的代码
单行注释我们使用 // 这是C++的注释风格
多行注释我们使用 /* */ 这是C语言的注释风格,不支持嵌套注释
但是使用C语言的注释有一个缺陷:
在这里插入图片描述
为什么?因为"/ * "会去寻找下一个 " * / ",一旦找到了,就是注释的区域。所以最后一个 ” * / “ 就没用了。
那么今天的分享就到这里了,希望给你带来了帮助。

标签:输出,初阶,程序调试,C语言,注释,test,printf,字符串,我们
来源: https://blog.csdn.net/awaitxm/article/details/122619113

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有