1、C语言是什么
C语言是众多计算机语言的一种。
2、编译器
2.1、原理
C语言是一门编译型 计算机语言,C语言源代码是文本文件 ,本身无法执行。必须通过编译器 的翻译,和链接器 的链接,生成二进制的可执行文件,机器才能执行可执行文件。
C语言代码是放在**.c**文件中的。



一个工程一般会有多个源文件组成。下图为源程序经过编译器和链接器处理的过程。

注:
- 每个源文件(.c) 经过编译器的处理后,生成对应的目标文件(.obj)。
- 多个目标文件和库文件 经过链接器的处理后生成对应的可执行文件(.exe)。
于是,我们 windows 系统电脑上就生成了用C语言程序生成的可执行文件。

2.2、vs 2022
vs 2022是一种集成开发环境。
vs 2022的优点:
- 主流,企业中较为常用。
- 包含编辑器 、编译器 、调试器,功能强大。
- 直接安装,不需要再额外配置环境。
- 有中文翻译安装包,初学者友好。
缺点:占用内存多。(多吗?)
3、VS项目、头文件、源文件
vs 2022上写代码要创建项目,选好地址直接创建即可。
头文件 的后缀是 .h ,源文件 的后缀是 .c 。
4、第一个C语言程序

5、 main 函数
main 函数是程序的入口 , main 函数有且只有一个 , main 函数前没有分号。
以上图为例, main 函数前有一个 int ,说明此时 main 函数结束时,返回一个整型的值, 刚好 return 0 与之相呼应。
6、库函数
为了不再实现常用的代码,C语言标准规定了一组函数,这些函数组成了一个函数库,被称为标准库 。这些函数被称为库函数。
举个例子, printf( ) 就是一个库函数,它的功能是在标准输出设备(一般指屏幕)上进行信息的打印。
cpp
#include<stdio.h>
int main()
{
int n = 10;
printf("%d\n", n);//打印整型
printf("%c\n", 'Q');//打印字符
double m = 10.0;
printf("%lf\n", m);//打印双精度浮点型
return 0;
}
7、关键字
注意三点:
- 关键字都有特殊的意义。
- 创建标识符时,不能与关键字重复。
- 关键字不能自己创建。
关键字有32个,学到了就记忆,没必要刻意记忆。
8、字符和ASCII编码
字符,如 a, Q, @, # 等。C语言中,用单引号将字符括起来,如 'a', 'Q', '@', '#' 。
假如我们每个人给每一个字符编写一个二进制序列,这个序列就叫做编码 。为了方便,美国国家标准协会(ANSI)出台了标准ASCII编码。如下图。

参考网址:ASCII 图表 - cppreference.com
最好掌握:
- 字符 A~Z 的ASCII值从 65~90
- 字符 a~z 的ASCII值从 97~122
- 对印的大写字母比小写字母的ASCII值小32
- 数字字符 0~9 的ASCII值从 48~57
- 换行符 \n 的ASCII值是 10
- ASCII值为 0~31 的32个字符,无法在屏幕上打印
用 %c 指定格式:
cpp
#include<stdio.h>
int main()
{
printf("%c\n", 'Q');
printf("%c\n", 81);
return 0;
}
可打印字符展示:
cpp
#include<stdio.h>
int main()
{
for (int i = 32; i <= 127; i++)
{
printf("%c ", i);
if (15 == i % 16)
{
printf("\n");
}
}
return 0;
}
9、字符串和\0
9.1、字符串
使用双引号括起来的字符就被称为字符串。
字符串用 %s 指定格式,也可以直接打印:
cpp
#include<stdio.h>
int main()
{
printf("%s\n", "Hello");
printf("Hello");
return 0;
}
(补充)用 scanf 函数输入并输出字符串:

9.2、 \0
C语言的字符串中,末尾隐藏了一个字符: \0 。字符 \0 是字符串的结束标志。

对于 " abcdef ",我们看到的是六个字符。但是,当我们在 vs 2022 调试模式的监视窗口下,我们发现了未显示的 \0 。\0 是字符串的结束标志。所以 printf( ) 函数打印字符串时,遇到 \0 就停止了。
来写一段代码,验证 \0 的功能:

我们调试一下,会发现 arr2 相比 arr1 ,少了 \0 :

结果:

arr1 正常打印,而 arr2 打印出了乱码。
如果我们给 arr2 加上 \0 ,同时在一个字符串里加上 \0 ,结果会怎样?

由此, \0 的重要性可见一斑。
11、转义字符
顾名思义:转变原来的意思的字符。
如:
- \0 :字符串的结束标志
- \n :换行
- \ddd :d d d 表示1~3个八进制的数字。
- \xdd :d d 表示两个十六进制的数字。
12、语句和注释
语句也是看到就学,不需要刻意记;注释则要写得能方便其他人阅读代码。