C语言常见概念
一、C语言简介
C语言是计算机语言的一种,用于人与计算机交流。属于高级语言,同时保留对底层硬件的控制能力,是系统编程领域的基础语言。
发展历史:
| 时间 | 事件 |
|---|---|
| 1972 | 丹尼斯·里奇在贝尔实验室设计 C 语言 |
| 1973 | 用于 UNIX 系统内核重写,快速流传 |
| 1988 | C 语言标准化("C 生万物") |
| 1989 | 发布 ANSI C(C89)标准 |
| 1999 | 发布 C99 标准 |
应用领域:操作系统、嵌入式设备、驱动程序、数据库、游戏引擎、其他语言解释器。
二、编译器与开发环境
2.1 编译型 vs 解释型
| 类型 | 翻译方式 | 代表语言 | 特点 |
|---|---|---|---|
| 编译型 | 一次性编译为可执行文件 | C / C++ / Go / Rust | 运行快,跨平台需重新编译 |
| 解释型 | 逐行解释执行 | Python / JS / Ruby / PHP | 跨平台性好,速度较慢 |
2.2 编译过程
.c 到 .exe 的四个阶段:
test.c → 预处理 → 编译 → 汇编 → 链接 → test.exe
- 预处理:处理
#include、#define,删除注释 - 编译:翻译为汇编代码
- 汇编:翻译为机器码,生成
.obj - 链接:与库函数链接,生成
.exe
2.3 主流编译器对比
| 编译器 | 开发方 | 平台 | 特点 |
|---|---|---|---|
| MSVC | 微软 | Windows | VS 系列默认编译器 |
| GCC | GNU | 跨平台 | 开源,Linux/macOS 主流 |
| Clang | LLVM | 跨平台 | 编译快,错误提示友好 |
2.4 集成开发环境(IDE)
IDE = 编辑器 + 编译器 + 调试器。
| IDE | 配套编译器 | 推荐场景 |
|---|---|---|
| VS 2022 | MSVC | Windows 下 C/C++ 首选 |
| Xcode | Clang | macOS / iOS 开发 |
| CLion | 可配置 | 专业跨平台开发 |
| Code::Blocks | GCC | 轻量入门 |
VS 2022 与 VSCode 区别:VS 2022 是完整 IDE(开箱即用);VSCode 仅是编辑器,需自行配置编译器,适合前端、脚本。
2.5 VS 2022 编写代码流程
- 创建项目:C++ → 空项目,名称和路径避免中文
- 创建源文件:
xxx.h头文件 /xxx.c源文件 - 编写代码
- 运行:
Ctrl + F5(不调试),F10逐行调试
常用快捷键:
| 功能 | 快捷键 |
|---|---|
| 注释 | Ctrl + K, Ctrl + C |
| 取消注释 | Ctrl + K, Ctrl + U |
| 调整字体 | Ctrl + 滚轮 |
| 运行(不调试) | Ctrl + F5 |
代码中不可使用中文符号。
.exe是二进制可执行文件。推荐托管到 Gitee。
三、C语言核心概念
3.1 main 函数
main 函数是程序的执行入口。三条规则:
- 是程序执行的入口
- 一个程序有且只有一个
- 多个
.c文件中main仍只能有一个,return 0表示正常返回
多种写法:
void main() {} // 古老,不推荐
int main() { return 0; } // 标准,推荐
int main(void) { return 0; } // 明确无参数,推荐
int main(int argc, char* argv[]) { // 带命令行参数
return 0;
}
3.2 printf 与库函数
printf = print + format,在标准输出设备打印信息。
#include <stdio.h>
int main(void) {
int n = 100;
printf("%d\n", n); // 输出 100
return 0;
}
stdio.h 含义:std(standard)+ i(input)+ o(output)= 标准输入输出头文件。
库函数是 C 语言将常用功能封装成的函数库(标准库)。常用分类:
- 输入输出:
printf、scanf(<stdio.h>) - 数学计算:
sqrt、pow(<math.h>) - 字符串处理:
strlen、strcpy(<string.h>) - 工具函数:
malloc、rand(<stdlib.h>)
3.3 关键字
关键字是 C 语言预定义、有特殊含义的单词,不能用作变量名或函数名。
C89 定义 32 个关键字:
| 类型 | 关键字 |
|---|---|
| 数据类型 | int char float double short long signed unsigned void |
| 控制语句 | if else switch case default for while do break continue return goto |
| 存储类型 | auto register static extern |
| 其他 | const volatile sizeof struct union enum typedef |
3.4 字符与 ASCII 编码
ASCII 编码表规定字符与数字的对应关系。关键值速记:
| 字符 | ASCII 值 |
|---|---|
'0' ~ '9' |
48 ~ 57 |
'A' ~ 'Z' |
65 ~ 90 |
'a' ~ 'z' |
97 ~ 122 |
'\0' |
0 |
'\n' |
10 |
小技巧:小写字母比大写字母大 32('A' + 32 == 'a');数字字符转数值 '5' - '0' == 5。
可打印字符展示:
#include <stdio.h>
int main(void) {
for (int i = 32; i <= 126; i++) {
printf("%c ", i);
if ((i - 31) % 16 == 0) printf("\n");
}
return 0;
}
3.5 字符串与 \0(重要)
C 语言没有专门字符串类型,用字符数组存储,以 \0 作为结束标志。
char str1[] = "hello"; // 自动加 \0,长度 6
char str2[] = {'h','e','l','l','o','\0'}; // 手动加 \0
关键点:
\0ASCII 值为 0,是字符串结束标志""字面量自动在末尾追加\0strlen计算长度不含\0,sizeof计算含\0的总大小- 忘记加
\0会导致printf越界访问,出现乱码
char str[] = "hello";
printf("%zu\n", strlen(str)); // 5
printf("%zu\n", sizeof(str)); // 6
3.6 转义字符
以 \ 开头的特殊字符序列:
| 转义字符 | 含义 | 转义字符 | 含义 |
|---|---|---|---|
\n |
换行 | \\ |
反斜杠 |
\t |
制表符 | \' |
单引号 |
\0 |
字符串结束 | \" |
双引号 |
\r |
回车 | \b |
退格 |
\ddd |
八进制字符 | \xhh |
十六进制字符 |
printf("C:\\test\\file\n"); // 输出 C:\test\file
printf("\101\n"); // 输出 A(八进制 101 = 65)
四、相关链接
内部链接:
- C语言关键字详解
- C语言字符串与指针
- C语言编译过程详解
- Gitee 代码托管入门
外部参考:
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)