目录
一、C语言是什么
1. 概念:人与人交流使用的是自然语言,人与计算机交流使用的是计算机语言,C语言就是计算机语言中的一种。
2. 常见的计算机语言:C/C++/Java/Python等。
3. C语言最初是作为Unix操作系统的开发工具而被发明的,丹尼斯·里奇是C语言之父。
4. 常见的操作系统:windows、linux、MacOs、Unix(实验室常用)等。
5. 在TIOBE index网站中可以看到每年各种计算机语言的排名情况:TIOBE Index - TIOBE
6. 写C语言代码,要严格按照C语言语法来写代码,否则err。
7. C语言和C++语言的关系,如下图:
二、初识编译和链接
1. 为什么要进行编译和链接?
答:C语言是一门编译型的计算机语言,python是一门解释型的计算机语言。C语言源代码存储在(.c)为后缀的文本文件中,文本文件是不能够被直接执行的,必须通过编译器的编译和链接器的链接生成二进制的可执行程序,可执行程序才能够被执行。
2. 编译和链接的大概过程是什么?
答:一个项目中通常由多个源文件组成,每个源文件都会单独经过编译器的处理生成对应的(.obj)为后缀的目标文件,这些目标文件和链接库会经过链接器的处理最终生成一个(.exe)为后缀的可执行程序。

三、什么是可执行程序
1. 问:什么是可执行程序?
答:我们平时所说的程序,是指双击后就可以直接运行的程序,这样的程序被称为可执行 程序。在 Windows 下,可执行程序的后缀有(.exe)和(.com),其中 .exe 比较常见;在类UNIX 系统(Linux、Mac OS 等)下,可执行程序没有特定的后缀,系统会根据文件的头部信息来判断是否为可执行程序。
四、什么是编译器
1. 问:什么是编译器?
答:C语言代码由固定的词汇按照固定的格式组织起来,简单直观,程序员容易识别和理解,但是对于CPU,C语言代码就是天书,根本不认识,CPU只认识几百个二进制形式的指令。这就需要一个工具,能够将C语言代码转换成CPU能够识别的二进制指令,这个工具就是编译器(内置了上文所说的编译器和连接器的作用)。
2. 常见的编译器:msvc、clang、gcc等。
五、什么是集成开发环境
1. 问:什么是集成开发环境?
答:实际开发中,除了编译器是必须的工具,我们往往还需要很多其他辅助软件,例如:
编辑器:用来编写代码,并且给代码着色,以方便阅读;
代码提示器:输入部分代码,即可提示全部代码,加速代码的编写过程;
调试器:观察程序的每一个运行步骤,发现程序的逻辑错误;
这些工具通常被打包在一起,统一发布和安装,例如 Visual Studio(集成了msvc)、DevC++(集成了gcc)、Xcode(集成了clang) 等,它们统称为集成开发环境(IDE)。
2. 注意:VSCode 不是集成开发环境,它其实是一个编辑器,只不过非常强大,可以安装各种插件来搭建C/C++的开发环境,对于初学者不推荐(前端人员经常使用)。
3. 在VS2022中代码是在项目中管理的,所以得先创建项目(空项目->项目名称->项目存放路径),再创建源文件、头文件。(项目名称最好有意义,不要使用中文、特殊字符;存放路径自己找一个熟悉得路径维护起来,路径中最好不要包含空格,特殊字符,中文字符,因为外国软件对中文的支持不太好)
4. VS2022中编译+链接+运行+不调试的快捷键是ctrl+F5,在笔记本电脑上Fn+Fx才能表示Fx原本的功能。注意:只按F5表示开始调试的意思通常与F9结合使用。
六、main函数的特点
1. 特点:① main函数是程序的入口。
② main函数有且仅有一个 (即使一个项目中有多个(.c)文件,但main函数只能有一个,因为程序的入口只能有一个)。
2. main函数的"壳子":
#include <stdio.h>
int main()
{
return 0;//在C语言中,正常返回,返回0,异常返回,返回非0
}
七、什么是关键字
1. 问:什么是关键字?
答:C语⾔中有⼀批保留的名字的符号,⽐如:int 、if 、return,这些符号被称为保留字或者关键字。
2. 注意:关键字都有特殊的意义,是保留给C语⾔使⽤的;程序员⾃⼰在创建标识符的时候是不能和关键字重复的;关键字也是不能⾃⼰创建的。
3. 常见的32个关键字:
auto break case char const continue default do double else enum extern float for goto if int long register short signed sizeof struct switch typedef union unsigned void volatile while static extern
4. 注:C 关键词 - cppreference.com(C语⾔关键字的全部介绍)
八、标识符的命名规则是什么
1. 标识符的命名规则:只能由字母、数字、下划线组成,且开头只能是字母或下划线。
九、字符和ASCII码表
1. 字符的概念:在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符常量是⽤单引号括起来的,如:'a','b','@'。
2. ASCII码表的由来:在计算机中所有的数据都是以⼆进制的形式存储的,为了更好的存储字符,美国国家标准协会(ANSI)出台了⼀个标准 ASCII 编码表,这个编码表中给每个字符都编了号,在存储字符时,直接存储它对应的ASCII码编号即可。
3. 最初的ASCII码表有128个字符,十进制编号为0~127。
4. 需要记住的标号有:
① 字符A~Z的ASCII码值从65~90(注意:大写字母比对应小写字母的码值小32)
② 字符a~z的ASCII码值从97~122
③ 对应的⼤⼩写字符(例如:a和A)的ASCII码值的差值是32
④ 数字字符0~9的ASCII码值从48~57
⑤ 换⾏ \n 的ASCII值是:10
⑥ ASCII码值为0~31的这32个字符是不可打印字符,⽆法打印在屏幕上观察
5. 我们用%d的形式打印字符,打印出来的是字符所对应的十进制ASCII码值,例如:printf("%d\n", 'a');//97
我们用%c的形式打印十进制数,打印出来的是十进制值所对应的字符,例如:printf("%c\n", 65);//A
6. 字符是特殊的整型。
#include <stdio.h>
//在屏幕上打印码值为32~127的字符
int main()
{
for (int i = 32; i < 128; i++)
{
printf("%c ", i);
}
printf("\n");
return 0;
}
十、字符串和\0
1. 字符串的概念:使⽤双引号括起来的⼀串字符就被称为字符串,如:"abcdef",就是⼀个字符串,字符串的打印格式可以使⽤占位符 %s 来指定,也可以直接打印,例如:
- printf("%s\n", "hello");
- char arr[] = "hello"; printf("%s\n", arr);
- printf("hello");
2. C语⾔字符串中⼀个特殊的知识,在字符串的末尾隐藏放着⼀个 \0 字符,这个 \0 字符是字符串的结束标志。
printf("abc\0def");//abc,并不会打印def。
3. 注意①:C语言中没有字符串类型,如果想要将字符串存储在变量中,一般采用字符数组来存放,存储的格式:① char arr[6] = "hello"; ② char arr[] = { 'h', 'e', 'l', 'l', 'o', '\0' };,采用第二种形式时,一定不要忘了‘\0’,否则不能表示arr字符数组中存放的是字符串。
4. 注意②:scanf() 将字符串读⼊字符数组时,不会检测字符串是否超过了数组⻓度。所以,储存字符串时,很可能会超过数组的边界,导致预想不到的结果。为了防⽌这种情况,在scanf函数中使⽤ %s 占位符读取字符串时,应该指定读⼊字符串的最⻓⻓度,即写成 %[m]s ,其中的 [m] 是⼀个整数,表⽰读取字符串的最⼤⻓度,后⾯的字符将被丢弃。
5. 注意③:对于常量字符串的理解:常量字符串可以看作是一个字符数组,但这个字符数组中的每个元素是不能被修改的,当常量字符串出现在表达式中时,它代表的是这个字符串中首字符的地址,我们在用字符指针接收常量字符串首字符的地址时,由于这个字符数组中的每个元素是不能被修改的,所以通常会在字符指针前加const修饰,例如:const char* p = "hello"。
十一、转义字符
1. 转义字符就是转变了原来意义的字符。
2. 常见的普通转义字符:
① \? :在书写连续多个问号时,为了防止它们被解析成三字母词,通常会在?前加反斜杠
② \' :在打印字符单引号时,可防止单引号与字符常量表示形式的单引号相匹配
③ \" :在字符串中含双引号时,可防止双引号与字符串表示形式的双引号相匹配
④ \\ :为了使反斜杠只是反斜杠的意思,而不被编译器误认为与后面的字符配对表示一个转移字符,通常在输出路径时常会用到,例如:printf("c:\\test\\test.c");
⑤ \n :换行符
⑥ \b :退格符,光标回退一个字符,但不删除字符
⑦ \r :回车符,光标移动到同一行的开头
3. 特殊转移字符:(可以理解为字符的8进制或16进制表示形式)
① \ddd:ddd表示1~3个八进制数字,如'\130',表示字符X,printf("%c", '\130');//打印X
② \xdd:dd表示2个十六进制数字,如'\x30',表示字符0
补充:\0:null字符,代表没有内容,ASCII码值是0,它也是\ddd的一种而已。
4. 一个转义字符整体表示一个字符。
5. 在屏幕上打印百分号与转义字符无关,而是与占位符有关,要打印百分号,写成%%即可
十二、注释
1. 注释是对代码的说明,可以帮助我们更好的理解代码,注意不要注释过度。
2. 注释的两种表示形式:
① /**/:这种注释可以插在行内,int fopen(char* s /* file name */, int mode);
优点:方便一次注释多行。
缺点:不支持嵌套注释,因为/* 开始注释后,遇到第⼀个 */ 就认为注释结束了。
② //:双斜杠到⾏尾都属于注释
优点:没有嵌套注释的概念
缺点:不太方便一次注释多行 (不过开发环境提供了相关的快捷键)
3. 注意1:不管是哪⼀种注释,都不能放在双引号⾥⾯,因为双引号⾥⾯的注释符号,会成为字符串的⼀部分,被解释为普通符号,失去注释作⽤。
注意2:编译时,注释会被替换成⼀个空格,所以 min/* 这⾥是注释*/Value 会变成
min Value ,⽽不是 minValue,不要在标识符内部写注释!。
4. 注释快捷键:添加注释:ctrl+k+c、取消注释:ctrl+k+u
本篇文章已完结,谢谢支持哟 ^^ !!!

