news 2026/2/17 14:29:29

C语言初学笔记2---C语言常见概念

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言初学笔记2---C语言常见概念

目录

  • 10.转义字符
    • 1.学习\\? → 在书写连续多个问号时使用,防止他们被解析成三字母词
    • 2.学习 \\' → 输出单个和多个单引号 '
      • 2.1输出单个单引号
      • 2.2输出多个单引号
    • 3.学习 \\" → 输出单个和多个双引号 "
      • 3.1输出单个双引号
      • 3.2输出多个双引号
    • 4.学习\\\ → 表示一个反斜杠,防止它被解释为一个转义序列符
    • 5.学习 \a → 终端报警
    • 6. 学习 \b → 退格键:光标回退一个字符,但不删除字符
    • 7. \f、\n和\v了解即可
    • 8.学习 \r → 回车符,光标移到同一行的开头
    • 9.学习 \t → 制表符
    • 10.学习\ddd(字符的8进制)和\xdd(字符的16进制),两种特殊的转义字符
      • 10.1 \ddd
      • 10.2 \xdd
    • 11.小题目:算一下字符串的长度
      • 11.1计算len1和len2字符串长度
      • 11.2若将上题中 c:\test\198\abc\test.c 中 1 换为 0,结果还一样吗?
    • 12.语句和语句分类(了解,后面学习)
      • 12.1空语句:一个 ; 就是一个语句
      • 12.2表达式语句: 在表达式后面加上封号
      • 12.3函数调用语句
      • 12.4复合语句:即代码块,成对括号中的代码就构成一个代码块
      • 12.5控制语句:控制程序的执行流程,以实现程序的各种结构方式
    • 13.注释
      • 13.1 // 单行注释
      • 13.2 /**/ 可以一行注释也可以多行注释,可以在代码里注释,不支持嵌套注释
      • 13.3注释快捷键

不知道为什么目录中1-4这些会多一个 \ ,以正文为准

10.转义字符

C语言中像这样的转义字符还有⼀些,具体如下:
• \? :在书写连续多个问号时使用,防止他们被解析成三字母词,在新的编译器上没法验证。
• \’ :用于表示字符常量。
• \" :用于表示⼀个字符串内部的双引号。
• \\ :用于表示⼀个反斜杠,防止它被解释为⼀个转义序列符。
• \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生。
• \b :退格键,光标回退⼀个字符,但不删除字符。
• \f :换页符,光标移到下⼀页。在现代系统上,这已经反映不出来了,行为改成类似于 \v 。(了解)
• \n :换行符。(已学过)
• \r :回车符,光标移到同⼀行的开头。
• \t :制表符,光标移到下⼀个水平制表位,通常是下⼀个4/8的倍数。
• \v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列。(了解)

下面2种转义字符可以理解为:字符的8进制或者16进制表示形式
• \ddd :d d d表示1~3个⼋进制的数字。 如: \130 表示字符X
• \xdd :d d表示2个十六进制数字。 如: \x30 表示字符0
• \0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,⽤于字符串的结束标志,其
ASCII码值是0.

1.学习\? → 在书写连续多个问号时使用,防止他们被解析成三字母词

\? :在书写连续多个问号时使用,防止他们被解析成三字母词。
当我们写出以下代码时

printf("(Are you ok ??)");

有些编译器会将 ??) 解析成三字母词,本来我们要的是(Are you ok ??)
解析成三字母词后
??) 会变成 ]
??( 会变成 [
所以我们在 ?? 前面加上 \ ,这样无论在那个编译器都会是正常的,而不会被解析成三字母词

printf("(Are you ok \?\?)");

2.学习 \’ → 输出单个和多个单引号 ’

\’ :用于表示字符常量。

2.1输出单个单引号

\’ :用于表示字符常量’
我们知道,输出字符时可以用单引号,比如输出字符A可以这样

printf("%c",'A');

那我们输出单个单引号能不能写成(“%c\n”, ‘’')这样呢?答案是不可以的。

printf("%c",''');

计算机会认为是多了一个单引号,而不是两个单引号括起来一个单引号,所以要输出单引号需要加转义字符

printf("%c",'\'');//作为字符输出

除此之外,我们可以作为字符串输出 ’

printf("'");//作为字符串输出

2.2输出多个单引号

printf("%s","''''");//%c是打印单个字符,%s是打印字符串printf("'''");

全部代码:

#include<stdio.h>intmain(){//1.1输出单个单引号(代码中\n为换行符,可删去)printf("%c\n",'\'');//打印单个单引号方法1:作为字符输出printf("'\n");//打印单个单引号方法2:作为字符串输出/* 输出单个单引号不能写成("%c\n", ''') 计算机会认为'''是多了一个单引号,而不是两个单引号括起来一个单引号 *///1.2输出多个单引号printf("%s\n","''''");printf("'''\n");return0;}

3.学习 \" → 输出单个和多个双引号 "

\" :用于表示⼀个字符串内部的双引号。
先输出两个字符串

#include<stdio.h>intmain(){printf("%s\n","abcdef");printf("%s\n","x");return0;}

3.1输出单个双引号

printf("%s","\"");//作为字符输出printf("\"");//作为字符串输出//输出单个双引号不能写成("%s\n", """),要输出单个双引号需要加转义字符

3.2输出多个双引号

打印 3 个双引号

printf("\"\"\"");//打印多个双引号必须都转义为 \"(如 printf("\"\"\""); )

4.学习\\ → 表示一个反斜杠,防止它被解释为一个转义序列符

\\ :用于表示⼀个反斜杠,防止它被解释为⼀个转义序列符。
在下面的代码中,写了一串C盘路径代码

printf("c:\test\test.c\n");

在此代码中,因为有 \ 的原因,导致 \t 含义发生了变化,变成了制表符(相当于tab键),所以输出也发生了变化

两个e前面有好几个空,\t = tab键,是制表符,所以输出这句话会有空格,可以加 \ 转义 \test。

printf("c:\\test\\test.c\n");//输出完整路径


这样便可以完整输出路径了

5.学习 \a → 终端报警

\a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生。
输出下面的代码,终端发出警报声(调大声音)

#include<stdio.h>intmain(){printf("\a");return0;}

6. 学习 \b → 退格键:光标回退一个字符,但不删除字符

\b :退格键,光标回退⼀个字符,但不删除字符。
本来光标在最后面,加入 \b 后,光标回退一个字符,

#include<stdio.h>intmain(){printf("xxxx\b");getchar();//getchar是函数,在键盘上读取字符。//若没有此函数,代码会直接结束运行,代码结束,无法看见光标,此函数可以阻止函数代码结束。return0;}


加入两个 \b 光标便回退两个字符。

printf("xxxx\b\b");


如果在 printf(“xxxx\b\b”); 的 \b 后面加上y,则会将第三个x变成y,光标跳到改变的字符后面

printf("xxxx\b\by");

7. \f、\n和\v了解即可

8.学习 \r → 回车符,光标移到同一行的开头

\b :退格键,光标回退⼀个字符,但不删除字符。
在abc后面加 \r ,打印的时候光标移到同一行的开头

#include<stdio.h>intmain(){printf("abc\r");//光标移到同一行的开头getchar();return0;}


若在 abcdefgh 中,在abc后面加入 \r ,defgh会替换前面的abc

printf("abc\rdefgh");//defgh会替换前面的abc


若在abcdefgh中,在abcde后面加 \r ,fjh会替换前面的abc,保留de

printf("abcde\rfgh");//fgh替换abc

9.学习 \t → 制表符

\t :制表符,光标移到下⼀个水平制表位,通常是下⼀个4/8的倍数。

#include<stdio.h>intmain(){printf("a\tbc\tdef\tqqqq\twwwww\tx");return0;}


两个水平制表符间的宽度一般是4或8的倍数,\t 的意思是 算上a 到 bc 的距离一共是8个字符。
a + 7 bc +6 def +5 qqqq +4 wwwww +3 x

10.学习\ddd(字符的8进制)和\xdd(字符的16进制),两种特殊的转义字符

10.1 \ddd

\ddd:ddd表示1 - 3个八进制的数字,如:\130表示字符x \后面跟的八进制的数字由0 - 7组成
以 \130 为例:

intmain(){printf("%c\n",'\130');return0;}


输出为X,因为八进制的130转换为十进制是88,对照ASCII表,88的ASCII码值(char)为X

10.2 \xdd

\xdd:dd表示1 - 2个十六进制的数字, 如:\x30表示字符0
以 \x33 为例:

#include<stdio.h>intmain(){printf("%c\n",'\x33');return0;}

输出为3,因为十六进制的33转为十进制是51,对照ASCII表,51的ASCII码值(char)为3
注:
①转换的十进制数字不能超过127,ASCII编码表范围是0-127
② \0 → 就是 \ddd 的形式,用来表示字符串的结束,ASCII码值=0

11.小题目:算一下字符串的长度

11.1计算len1和len2字符串长度

#include<stdio.h>#include<string.h>intmain(){intlen1=strlen("abcdef");intlen2=strlen("c:\test\198\abc\test.c");printf("%d\n",len1);printf("%d\n",len2);return0;}

解析:

#include<stdio.h>#include<string.h>intmain(){intlen1=strlen("abcdef");//输出为6//strlen函数 - string length - 用来统计字符串的长度//(调用此函数要头文件#include <string.h>)//字符串末尾有\0,但是\0是字符串结束标志,不是内容,统计长度不算\0intlen2=strlen("c:\test\198\abc\test.c");//输出为18,\后面跟的八进制的数字:0-7组成,没有9、8;//拆分为18个:c : \t e s t \1 9 8 \a b c \t e s t . cprintf("%d\n",len1);printf("%d\n",len2);return0;}

11.2若将上题中 c:\test\198\abc\test.c 中 1 换为 0,结果还一样吗?

#include<stdio.h>#include<string.h>intmain(){intlen2=strlen("c:\test\098\abc\test.c");printf("%d\n",len2);return0;}


输出为6,\0 表示字符串结束。

12.语句和语句分类(了解,后面学习)

12.1空语句:一个 ; 就是一个语句

#include<stdio.h>intmain(){;//空语句return0;}

12.2表达式语句: 在表达式后面加上封号

#include<stdio.h>intmain(){inta=20;intb=0;b=a+5;//表达式语句return0;}

12.3函数调用语句

#include<stdio.h>intmain(){printf("hehe\n");//函数调用语句return0;}

12.4复合语句:即代码块,成对括号中的代码就构成一个代码块

#include<stdio.h>staticvoidprint(intarr[],intsz)//函数{}大括号中的代码也构成复合语句{inti=0;for(i=0;i<sz;i++){printf("%d",arr[i]);}}#include<stdio.h>intmain(){inti=0;intarr[10]={0};for(i=0;i<10;i++)//for循环的循环体的{}大括号中的就是复合语句{arr[i]=10-i;printf("%d\n",arr[i]);return0;}}

12.5控制语句:控制程序的执行流程,以实现程序的各种结构方式

C语言支持三种结构:顺序结构、选择结构、循环结构,C语言有9种控制语句
分为以下三类:

1.条件判断语句(也叫分支语句):if语句、switch语句
2.循环执行语句:do while语句、while语句、for语句
3.转向语句:break语句、goto语句、continue语句、return语句

13.注释

对编译器没用,是给程序员看的,更好地理解代码,不要写没必要的注释
注释的两种形式:

13.1 // 单行注释

printf("hehe\n");//打印输出hehe

13.2 /**/ 可以一行注释也可以多行注释,可以在代码里注释,不支持嵌套注释

1.多行注释
/*




/
2.嵌套注释
代码是用 /
/ 注释的,里面就不能再用 // 注释

但是/
*/里面可以嵌套//

13.3注释快捷键

VS2022工具栏有添加注释和取消注释的按钮
注释快捷键:
Ctrl+/
添加注释:Ctrl+k+c
取消注释:Ctrl+k+u
(若注释失效,可能是编译器设置问题)
注:编译器编译时,注释会被替换成一个空格

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/6 23:32:16

泰克示波器 4 系列 MSO 在嵌入式开发中的实测分析

嵌入式系统广泛应用于消费电子、工业控制、汽车电子等领域。嵌入式开发人员需要面对复杂的硬件电路、复杂的软件代码以及各种通信协议。泰克 4 系列 MSO 结合了示波器、逻辑分析仪、协议分析仪等多种功能&#xff0c;可以帮助开发人员快速定位问题、验证设计并优化性能。泰克 4…

作者头像 李华
网站建设 2026/2/9 5:21:04

LCR测试仪温度漂移补偿的解决方案

LCR测试仪是电子测量中重要的仪器&#xff0c;广泛应用于元器件的参数测试&#xff0c;如电感&#xff08;L&#xff09;、电容&#xff08;C&#xff09;和电阻&#xff08;R&#xff09;。然而&#xff0c;温度变化会导致待测元件参数的漂移&#xff0c;进而影响测试结果的准…

作者头像 李华
网站建设 2026/2/17 6:39:10

C++医学图像处理经典ITK库用法详解<四>: 图像分割模块功能

1、ITK库概述ITK (Insight Segmentation and Registration Toolkit) 是一个开源的跨平台软件开发工具包&#xff0c;主要用于图像处理&#xff0c;特别是生物医学图像处理领域。该工具包提供了一套丰富的图像处理算法&#xff0c;特别是在图像分割和配准方面具有强大的功能。IT…

作者头像 李华
网站建设 2026/2/2 23:35:03

C++医学图像处理经典ITK库用法详解<五>: 数学运算与变换模块功能

1、ITK库概述ITK (Insight Segmentation and Registration Toolkit) 是一个开源的跨平台软件开发工具包&#xff0c;主要用于图像处理&#xff0c;特别是生物医学图像处理领域。该工具包提供了一套丰富的图像处理算法&#xff0c;特别是在图像分割和配准方面具有强大的功能。IT…

作者头像 李华
网站建设 2026/2/16 11:40:08

小程序毕设项目:基于springboot+微信小程序的社区论坛与二手交易平台的设计与实现(源码+文档,讲解、 调试运行,定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/2/16 9:26:38

.NET+AI | MEAI | 会话缓存(6)

一句话简介通过 Microsoft.Extensions.AI 的缓存功能,智能存储和复用 AI 响应,显著降低 API 成本并将响应速度提升 10-100 倍。&#x1f3af; 核心价值✅ 成本优化:相同请求直接返回缓存,避免重复 API 调用✅ 性能飞跃:缓存命中响应时间可缩短至毫秒级✅ 全场景支持:自动处理流…

作者头像 李华