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

第二篇

  • 一、探讨字符串
  • 二、插入知识点程序调试
  • 三、转义字符和注释
    • 3.1 转义字符
    • 3.2 注释

一、探讨字符串

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.cprintf("C:\\ana\\test\\test.c\n");//输出结果是  C:\ana\test\test.creturn 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"));//结果是 17printf("%d\n", strlen("C:\\ana:\\test:\\test.c"));//结果是 20

不多做解释。

3.2 注释

1、注释是用来解释代码
2、注释可以注释一些不需要的代码
单行注释我们使用 // 这是C++的注释风格
多行注释我们使用 /* */ 这是C语言的注释风格,不支持嵌套注释
但是使用C语言的注释有一个缺陷:

为什么?因为"/ * "会去寻找下一个 " * / ",一旦找到了,就是注释的区域。所以最后一个 ” * / “ 就没用了。
那么今天的分享就到这里了,希望给你带来了帮助。

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

  1. C语言中阶第二篇:循环语句for透析(包含多条件判断和多变量控制)

    业精于勤荒于嬉,行成于思毁于随. 今天这一篇,我们继续来说一说循环语句的知识. 第八篇 1.for循环表达式 1.for循环里的break和continue 1.for循环的空条件(for(;;)) ...

  2. C语言初阶第三篇:换我心,为你心,始知C语言 从C语言选择语句到循环语句保姆教学来喽

    换我心,为你心,始知C语言 老铁们,咱们上一篇文章把字符串的知识点给过了一遍,今天就要开始真正的程序语句的学习了,也就是选择语句和循环语句,今天的内容比较简单,所以写的也不多,废话不多说,咱们开始吧! ...

  3. 五十分钟带你看遍C语言初阶语法(总纲)

    C语言初阶语法(总纲) 此篇博客包含了前面C语言所有的基础语法,写这一期的博客不仅是为了记录自己的学习成果也是为了让更多的朋友能学到对自己有用的知识,如果总有一个知识点帮助到了你,给卑微博主点点关注加 ...

  4. C语言初阶——5.字符串

    C语言初阶--5.字符串 1. 字符串操作 1.1 字符串遍历 可以通过数组方式遍历字符串. char* str="Hello World"; for(int i = 0;'\0' ...

  5. C语言初阶_初识C语言(1)

    凡是过往,皆为序章 期末考试结束了,真是感慨良多啊...... C语言编程题大家都做对了多少呢? 不管怎么样,都已经过去了.不管你学得怎么样,都可以在接下来的时间里,我们一起重新回顾一遍C语言初阶的知 ...

  6. C语言初阶(18) | 数组详解

    目录 1.数组的定义 2.一维数组 2.1一维数组的格式 2.2一维数组的初始化 2.3一维数组的使用 2.4一维数组再内存中的存储 3.二维数组 3.1二维数组的创建和初始化 3.2二维数组的使用 ...

  7. C语言初阶——6.进制

    C语言初阶--6.进制 1. 进制 百度百科: 进制也就是进位计数制,是人为定义的带进位的计数方法,对于任何一种进制-X进制,就表示每一位置上的数运算时都是逢X进一位. 十进制是逢十进一,十六进制是逢 ...

  8. C语言初阶作业题-数组

    C语言初阶作业题-数组 一.选择题 1.关于一维数组初始化,下面哪个定义是错误的?( ) A.int arr[10] = {1,2,3,4,5,6}; B.int arr[] = {1,2,3,4,5 ...

  9. C语言编程>第二十一周 ⑥ 请补充main函数,该函数的功能是:从键盘输入一个字符串,即一个指定,然后把这个字符及其后面的所有字符全部删除,结果仍然保存在原串中。

    例题:请补充main函数,该函数的功能是:从键盘输入一个字符串,即一个指定,然后把这个字符及其后面的所有字符全部删除,结果仍然保存在原串中. 例如:输入"1234567",指定字符 ...

最新文章

  1. 一个「PPT」框架,让超大模型调参变简单:清华刘知远、黄民烈团队力作
  2. struts2教程(2)--配置
  3. java和其他语言相比 特点,【单选题】与其他面向对象语言相比,Java语言突出的特点是:...
  4. Flask web开发之路二
  5. 利用python爬虫(案例7)--X讯招聘的小职位们
  6. 随感 -- 2013/08/16
  7. codeigniter 辅助函数 - 敏感词过滤
  8. linux生成的pdf文件,把LINUX MAN PAGE生成为PDF文件的脚本
  9. easy-excel导入导出excel(待完善)
  10. struts 标签导入
  11. oracle迁移性能对比,SQL Server 2015与Oracle性能对比.doc
  12. javascript 下载方法
  13. linux最好的mp4软件,【良心推荐】5款好用的MP4视频编辑器
  14. 3D优化之ShadowGun系列二:浓烟,使用面片模拟粒子效果
  15. 广州大学计算机考研有歧视吗,本科985,考研被调剂去了普通一本广州大学,有必要读吗?...
  16. 清除90天苹果充值记录_王者荣耀安卓苹果跨系统角色转移服务,限量测试收费99元...
  17. 进程线程(六) 深度睡眠 和 浅度睡眠
  18. 1602液晶显示屏显示字符
  19. 洁净厂房洁净度等级SICOLAB
  20. 经典书籍--经济 投资 管理 修身 谋略 自传

热门文章

  1. 视频超分:Zooming Slow-Mo(Zooming Slow-Mo: Fast and Accurate One-Stage Space-Time Video Super-Resolution)
  2. 全渠道营销+线上线下结合新零售数字门店saas系统
  3. 编程金融小白学 股票期权 lv.6 希腊字母 Gamma
  4. Python设计模式之模版模式(16)
  5. 理财入门《小狗钱钱》阅读总结
  6. 用python从Oracle中读数据
  7. ISP-坏点校正(DPC)
  8. 人工智能面试总结-回归
  9. Dijkstra算法的思想
  10. 背单词app软件测试与评估