大家好,今天我们来聊聊C语言的基础概念。无论你是编程小白还是想巩固基础的老手,相信这篇文章都能帮你理清C语言的那些核心知识点。
1. C语言是什么?
人与人的交流用的是自然语言,比如中文、英语。那人跟计算机怎么交流呢?答案就是计算机语言。
计算机语言有很多种,C语言就是其中非常经典的一种。我们通过C语言写程序,告诉计算机该做什么。除了C语言,还有C++、Java、Go、Python等,都是常见的计算机语言。
2. C语言的历史与辉煌
C语言最初诞生于贝尔实验室,它的发明者------丹尼斯·里奇和肯·汤普逊,用C语言重写了Unix操作系统。从此,C语言就与操作系统紧密绑定,成为系统级编程的代表语言。
时至今日,C语言依然是编程语言排行榜(TIOBE Index)上的常青树,经久不衰。

3. 为什么选择VS2022作为编译器?
3.1 编译和链接是怎么回事?
C语言是编译型语言,我们写的代码是文本文件(.c文件),计算机不能直接执行。必须经过两个步骤:
-
编译:每个.c文件被编译器处理,生成对应的.obj目标文件。
-
链接:多个.obj文件和库文件被链接器合并,最终生成.exe可执行文件。

简单来说,就是从人能看懂的代码,变成机器能运行的指令。
3.2 常见的编译器有哪些?
-
MSVC(集成在VS2022中)。
-
clang(集成在XCode中)。
-
gcc(集成在CodeBlocks、DevC++中)。
3.3 为什么推荐VS2022?
优点:
-
企业级开发工具,工作中常见。
-
集成了编辑器、编译器、调试器,功能强大。
-
安装简单,几乎不用配置。
-
中文界面,对初学者友好。
缺点:
- 安装包较大,占用空间多。
总的来说,如果你是初学者,VS2022的社区版是最好的选择,完全免费,用起来也顺手。
VS2022安装教程可以看这个视频:https://www.bilibili.com/video/BV11R4y1s7jz/
https://www.bilibili.com/video/BV11R4y1s7jz/
4. VS项目和文件结构
在VS中写代码,要先创建项目。项目中可以添加两种文件:
-
源文件 :以 **
.c**结尾,存放代码。 -
头文件 :以
.h结尾,存放声明、宏定义等。
5. 第一个C语言程序
cpp
#include <stdio.h>
int main()
{
printf("hello C\n");
return 0;
}
运行快捷键:Ctrl + F5
屏幕上会输出:hello C
6. main函数:程序的入口
-
每个C程序必须有且只有一个 main 函数。
-
程序从 main 开始执行。
-
int 表示 main 函数执行完会返回一个整数。
-
最后的 return 0
;表示程序正常结束。
常见错误:
-
main 拼错。
-
漏掉 main 后面的小括号。
-
用了中文符号(比如中文分号;)。
-
语句末尾忘记加分号。
7. printf和库函数
printf 是一个库函数,用来在屏幕上打印内容。
cpp
printf("hello C\n"); // 打印字符串
printf("%d\n", 100); // 打印整数
printf("%c\n", 'q'); // 打印字符
printf("%lf\n", 3.14); // 打印浮点数
这里的**%d、%c** 是占位符,会被后面的值替换。
库函数是C标准规定好的函数,不同编译器厂商都会实现它们。使用库函数前,要包含对应的头文件,比如**printf**需要:
cpp
#include <stdio.h>
更多库函数可以参考:https://cplusplus.com/reference/library/。
8. 关键字:C语言的保留字
C语言中有32个关键字,它们是留给语言本身用的,程序员不能自己创建,也不能用作变量名、函数名。
cpp
auto break case char
const continue default do
double else enum extern
float for goto if
int long register return
short signed sizeof static
struct switch typedef union
unsigned void volatile while
C99标准又加入了一些,比如**inline、restrict**等,但最常用的还是上面这32个。
9. 字符和ASCII编码
字符就是用单引号括起来的符号,比如 'a'、'@' 。计算机里存的是二进制,为了统一,美国搞了个ASCII编码表。
常用ASCII值:
-
'A'~'Z':65 ~ 90。 -
'a'~'z':97 ~ 122。 -
'0'~'9':48 ~ 57。 -
换行
\n:10。 -
0 ~ 31 是不可打印字符。
cpp
printf("%c\n", 'Q'); // 输出 Q
printf("%c\n", 81); // 输出 Q,因为81是Q的ASCII码

10. 字符串和\0
字符串是用双引号括起来的,比如 "hello" 。字符串末尾会自动隐藏一个 \0,它是字符串的结束标志。
cpp
char arr1[] = {'a', 'b', 'c'}; // 没有\0
char arr2[] = "abc"; // 末尾有\0
如果打印 arr1 ,可能会在 abc 后面出现乱码,因为找不到结束标志。而 **arr2**就能正常打印。
11. 转义字符:让字符"变个意思"
转义字符就是 \ 加上一个字符,让它表示别的意思。
常用转义字符:
| 转义字符 | 含义 |
|---|---|
\n |
换行 |
\t |
制表符 |
\\ |
反斜杠本身 |
\' |
单引号 |
\" |
双引号 |
\0 |
空字符(字符串结束标志) |
\ddd |
八进制表示的字符 |
\xdd |
十六进制表示的字符 |
cpp
printf("abc\ndef"); // 输出两行:abc 和 def
printf("c:\\test\\code.c"); // 输出 c:\test\code.c
printf("%c\n", '\130'); // 输出 X(130是八进制,转十进制88)
printf("%c\n", '\x30'); // 输出 0(x30是十六进制,转十进制48)
12. 语句的分类
C语言的代码由语句构成,主要分五类:
12.1 空语句
只有一个分号,啥也不干。
cpp
;
12.2 表达式语句
表达式后面加分号。
cpp
b = a + 5;
12.3 函数调用语句
调用函数后面加分号。
cpp
printf("hehe\n");
12.4 复合语句
用**{}**括起来的代码块。
cpp
{
int i = 0;
printf("%d", i);
}
12.5 控制语句
控制程序执行流程,比如:
-
分支语句:if、switch。
-
循环语句:for、while、do while。
-
转向语句:break、continue、goto、return。
13. 注释:写给人的说明
注释是给人看的,编译器会忽略它。
13.1 两种注释方式
第一种:/* ... */
cpp
/* 这是一条注释 */
/* 可以跨行
写多行注释 */
注意:不能嵌套,遇到第一个 */ 就结束。
第二种://
cpp
// 这是单行注释
int x = 1; // 行尾注释
这是C99标准新增的,更简单直观。
13.2 注释的细节
-
编译时,注释会被替换成一个空格。
-
双引号里面的
//或/*只是普通字符,不会被视为注释。
cpp
printf("/* 这不是注释 */"); // 字符串内的符号,正常打印
C语言是一门基础但强大的语言,理解这些常见概念,是学好C语言的第一步。希望这篇文章对你有帮助,也欢迎你留言讨论!