C语言概述与基本概念
🎯 一句话秒杀:C语言是面向过程的编程语言,程序由函数组成,main函数是程序入口;学完本章你就能看懂任何 C 程序的"骨架"。
① 📊【历年真题考情】
本章(C语言概述与基本概念)在广东专升本计算机统考中的位置:
| 项目 | 结论 |
|---|---|
| 出题频次 | ★★★☆☆(基础送分模块,几乎年年 1-2 题;2026 新增"编译/链接/运行错误"考点后重要性上升) |
| 常考题型 | 单选(2022 单选4、2024 单选1/2、2026 单选8)、判断(2023 判断1) |
| 预估分值 | 3~8 分 / 200 分(约 2%~4%),性价比最高的送分题 |
| 考纲归属 | 2026 考纲「C 语言基础」模块(程序结构、数据类型、运算符、输入输出) |
考场真实出现过的高频题:
- 2022 单选4:合法标识符判断(
_6_✅ /6_6❌ /define❌ /typedef❌) - 2023 判断1:注释只能在程序最开始?(错——注释位置任意)
- 2024 单选1:C 语言注释格式(
\N是陷阱,正确的是/* */和//) - 2024 单选2:
strcmp函数需要包含的头文件(string.h) - 2026 单选8:编译错误、链接错误、运行错误的区分(2026 考纲新增重点)
🎯 学习目标:学完本章,你能 ① 一眼判断标识符合法性;② 说清注释的正确写法;③ 知道每个常用函数在哪个头文件;④ 区分编译/链接/运行错误发生在哪一阶段——这四类题就是本章真题的全部考法。
② 🗣️【零基础大白话引入】
编程是什么? 想象你开了一家餐厅,给厨房的机器人下指令。机器人听不懂人话,只听得懂"切土豆""放锅里""煮 5 分钟"这种一步一步的明确指令——这一整套指令就是程序,而 C 语言就是和这个机器人交流的"菜谱语言"。
C 语言能干嘛? 小到计算器、游戏,大到操作系统(Windows、Linux 的内核就是 C 写的)、嵌入式设备(洗衣机、汽车芯片),全都有 C 语言的身影。学完 C,你就掌握了"给计算机下命令"的基础能力。
本章先学什么? 就像学做菜先认识厨房一样,本章先带你认识:
- 菜谱长什么样(C 程序的基本结构)
- 菜谱是怎么被机器人执行的(编译/链接/运行——2026 新考点)
- 食材怎么命名(标识符——2022 考过)
- 菜谱上的小字备注(注释——2023/2024 考过)
💡 记住:C 程序 = 一个 main 主函数 + 若干其他函数。main 是"总厨",其他函数是"帮厨",各干各的活,最后拼成一道完整的菜。
③ 📖【正式核心知识点讲解】
本章知识点 = 考纲要求 + 历年真题实际考过的内容。真题未考、考纲不作要求的内容已剔除或标注"了解"。
3.1 C语言发展史(了解即可,近年 0 出题)
| 年份 | 事件 |
|---|---|
| 1972 | 丹尼斯·里奇在贝尔实验室设计C语言 |
| 1978 | Kernighan & Ritchie 出版《C程序设计语言》→ K&R C |
| 1989 | ANSI 发布 C89/C90 标准(最经典,考试基准) |
| 1999 | C99 标准(新增//注释、变长数组等) |
| 2011 | C11 标准 |
| 2024 | C23 最新标准(超纲,了解即可,不考) |
💡 一句话记住:1972 年里奇发明 C,考试认 C89 标准。
3.2 第一个C程序(必背)
#include <stdio.h> // 预处理指令——包含标准输入输出头文件
int main() // 主函数——程序入口
{
printf("Hello, World!\n"); // 调用库函数输出
return 0; // 返回整型0给操作系统,表示正常结束
}🚨 红牌警告
main是程序的唯一入口,一个程序有且只有一个 main 函数return 0;必不可少——表示程序正常退出(很多考试问这个)#include以#开头——不需要分号结尾stdio.h是头文件,printf和scanf都在里面
3.2.1 语句的书写规则(2024 单选1-D 考点)
每条语句以分号
;结尾;一条语句可以分成多行写
printf("Hello, " // 第一行
"World!\n"); // 第二行——同一语句跨两行,合法
// 等价于 printf("Hello, World!\n");✅ 2024 真题:
一条语句可以分成多行来写→ 正确(单选1-D)
3.2.2 注释的写法与位置(2024 单选1 / 2023 判断1 · 必考)
C 语言只有两种注释:
/* ... */和//。不存在\N这种注释!注释可以出现在程序的任何位置!
// 这是单行注释(C99 起支持,C89 用 /* */)
/* 这是多行
注释 */
int main() {
/* 注释可以在函数内部 */
// 注释可以在语句中间
printf("hi\n"); // 注释可以在行尾
return 0;
}🚨 2024 真题陷阱:选项 C"注释可以用
\N开始" → 错误,C 语言没有\N注释 🚨 2023 判断1:"注释只能在程序最开始" → 错误,注释位置任意(行首、行尾、语句中间、函数内外都可以)
3.3 C程序的执行过程(2026 新增考点重点)
源代码 (.c) → 预处理 → 编译 → 汇编 → 链接 → 可执行文件 (.exe)| 阶段 | 产物 | 说明 |
|---|---|---|
| 预处理 | .i 文件 | 处理 #include、#define 等指令 |
| 编译 | .s 文件 | 将C代码转为汇编代码 |
| 汇编 | .o / .obj 文件 | 将汇编代码转为机器指令 |
| 链接 | .exe 文件 | 将多个目标文件+库文件合并成可执行文件 |
🔑 秒杀秘籍
考试常考:链接是把所有目标文件连起来生成最终exe;编译只是把单个.c变成.obj
🗣️ 零基础类比:你把中文菜谱交给只会英文的机器人,中间需要"翻译官"把菜谱变成机器人能懂的机器指令。
- 编译 = 把一页菜谱翻译成英文草稿(.s 汇编)→ 再转成机器码零件(.obj)
- 链接 = 把"切菜步骤"“炒菜步骤”“装盘步骤"三份零件拼成一份完整可执行的菜谱(.exe)
- 所以:编译管单页,链接管拼接——这就是"链接是把所有目标文件连起来"的意思。
3.3.1 编译错误 vs 链接错误 vs 运行错误(2026 单选8 · 考纲新增必考)
| 错误类型 | 什么时候发现 | 典型例子 |
|---|---|---|
| 编译错误 | 编译阶段(写代码时) | 缺少分号、括号不匹配、变量未声明 |
| 链接错误 | 链接阶段(生成exe时) | 函数/变量只有声明没有定义(符号找不到) |
| 运行错误 | 程序运行时 | 数组越界、除以 0、访问空指针 |
✅ 2026 真题单选8:下列说法正确的是 → B. 缺少分号通常属于编译错误 解析:缺分号破坏语法 → 编译器报告;数组越界/除以 0 多在运行阶段暴露(A、C 错);链接错误常见于符号找不到定义(D 说"一定不会报警"错)
🚨 记法:语法问题找编译,符号问题找链接,越界/除零找运行
3.4 C语言的基本构成——函数(2024 单选1-B 必考)
返回值类型 函数名(参数列表)
{
语句序列;
return 返回值;
}C程序 = 一个 main 函数 + 若干其他函数
flowchart TD
A["C 程序"] --> B["main 主函数<br/>程序唯一入口<br/>有且仅有一个"]
A --> C["其他函数<br/>函数1(如 add)"]
A --> D["其他函数<br/>函数2(如 print)"]
B --> E["main 调用其他函数<br/>分工协作完成程序"]
style A fill:#2F6B9E,color:#fff
style B fill:#C0392B,color:#fff
style C fill:#E67E22,color:#fff
style D fill:#27AE60,color:#fff
style E fill:#8E44AD,color:#fff📌 2024 单选 1-B:C 程序的基本组成单位是函数,main 是入口。
- 函数是C程序的基本单位(2024 单选1-B:C 程序的基本组成单位是函数 → 正确)
- 不允许函数嵌套定义(一个函数内不能定义另一个函数)
- 但可以嵌套调用(函数A里调用函数B,函数B里调用函数C)
3.5 标识符与关键字(2022 单选4 必考)
标识符命名规则
- 由 字母、数字、下划线 组成
- 不能以数字开头
- 区分大小写(Sum ≠ sum)
- 不能与关键字重名
✅ 合法:sum, _count, student_name, MaxValue ❌ 非法:2num(数字开头), a+b(特殊符号), int(关键字)
🚨 红牌警告
考试最爱考:
2a❌a_1✅_int✅int❌(关键字) 注意:下划线可以开头,_a是合法标识符
✅ 2022 真题单选4:可用作 C 自定义标识符的是 → A.
_6_逐项判断:A_6_:下划线开头合法 ✅;B6_6:数字开头 ❌;Cdefine:关键字 ❌;Dtypedef:关键字 ❌
常见关键字(32个,C89标准)
| 类别 | 关键字 |
|---|---|
| 数据类型 | int char float double void short long signed unsigned |
| 控制语句 | if else switch case default for while do break continue goto return |
| 构造类型 | struct union enum typedef |
| 存储类别 | auto static extern register const volatile |
| 其他 | sizeof |
💡 不需要背全部 32 个——只要会判断"某个词是不是关键字"即可(考试只考判断)。
3.6 预处理指令
| 指令 | 用途 | 示例 |
|---|---|---|
#include | 包含头文件 | #include <stdio.h> |
#define | 定义宏常量/宏函数 | #define PI 3.14159 |
#ifdef / #endif | 条件编译 |
3.6.1 #define 宏常量示例
#define PI 3.14159 // 定义宏常量:程序中所有 PI 都会替换为 3.14159
#define MAX 100
int main() {
printf("%f\n", PI); // 编译时 PI → 3.14159
printf("%d\n", MAX); // MAX → 100
return 0;
}💡 宏替换发生在预处理阶段——先把代码里的
PI全部换成3.14159,再交给编译器。
3.6.2 #include < > 与 #include " " 的区别(教材经典)
#include <文件名>在系统头文件目录下搜索(直接查找)#include "文件名"先在当前目录搜索,再到系统目录搜索(先局部后全局)
3.6.3 头文件与函数对应表(2024 单选2 必考)
| 头文件 | 常见函数 |
|---|---|
stdio.h | printf scanf getchar putchar |
string.h | strcmp strcpy strlen strcat |
math.h | sqrt pow fabs sin cos |
stdlib.h | malloc free exit atoi |
✅ 2024 真题单选2:使用
strcmp函数需要包含的头文件是 → A.string.h解析:字符串函数全在string.h;math.h是数学函数;stdlib.h是标准库(malloc/free);stdio.h是输入输出
④ 🧪【真题同源例题】
例题 1:入门基础题(先热热身)
判断下列标识符是否合法,并说明原因:
sum // ①
2num // ②
_a // ③
int // ④
Max_Value // ⑤逐项分析:
- ①
sum:字母开头,由字母组成 → 合法 ✅ - ②
2num:数字开头 → 非法 ❌(规则:不能以数字开头) - ③
_a:下划线开头 → 合法 ✅(下划线可以和字母一样开头) - ④
int:是关键字 → 非法 ❌(不能与关键字重名) - ⑤
Max_Value:字母+下划线,非关键字 → 合法 ✅
✅ 对应 2022 真题单选4 的解题套路:一看开头是不是数字,二看有没有非法符号,三看是不是关键字
例题 2:2024 真题改编(单选 · 注释格式)
下列关于 C 语言注释的说法,错误的是( )
A. 可以用 // 表示单行注释 B. 可以用 /* */ 表示多行注释 C. 注释可以用 \N 开始 D. 注释可以出现在程序中的任何位置
逐项分析:
- A:
//是单行注释(C99 起)→ 说法正确 - B:
/* */是多行注释 → 说法正确 - C:
\N开始?C 语言不存在\N注释 → 说法错误 ← 选它 - D:注释位置任意 → 说法正确(2023 判断1 佐证)
✅ 对应 2024 单选1,答案 C。陷阱就是 C 选项——把不存在的
\N混进来。
例题 3:2024 真题改编(单选 · 头文件)
C 语言中,使用 strcpy 函数需要包含的头文件是( )
A. stdio.h B. math.h C. string.h D. stdlib.h
逐项分析:
- A
stdio.h:输入输出函数(printf/scanf)的家 → 不是 - B
math.h:数学函数(sqrt/pow)的家 → 不是 - C
string.h:字符串函数(strcpy/strcmp/strlen/strcat)的家 → 选它 ✅ - D
stdlib.h:标准库(malloc/free)的家 → 不是
✅ 对应 2024 单选2(strcmp 变 strcpy),答案 C。记住"字符串三兄弟 strcpy/strcmp/strlen 全在 string.h"。
例题 4:2026 真题改编(单选 · 编译/链接/运行错误)
下列说法正确的是( )
A. 数组越界一定能在编译阶段发现 B. 缺少分号通常属于编译错误 C. 除以 0 一定属于链接错误 D. 函数声明不匹配一定不会报警
逐项分析:
- A:数组越界 → 编译阶段发现不了,运行时才崩 → 错
- B:缺少分号 → 破坏语法 → 编译阶段报错 → 对 ✅
- C:除以 0 → 运行错误(不是链接错误)→ 错
- D:函数声明不匹配 → 编译器通常会报警 → 错
✅ 对应 2026 单选8,答案 B。记法:语法找编译,符号找链接,越界/除零找运行
⑤ ⚠️【历年真题高频扣分坑】
| # | 陷阱 | 错误做法 | 正确做法 | 出处 |
|---|---|---|---|---|
| 1 | \N 注释 | 以为 C 有 \N 注释 | C 只有 /* */ 和 // | 2024 单选1 |
| 2 | 注释位置 | 以为注释只能在开头 | 注释位置任意 | 2023 判断1 |
| 3 | 下划线开头 | 以为 _a 非法 | _a 合法,下划线可开头 | 2022 单选4 |
| 4 | define/typedef | 当普通标识符 | 都是关键字,不可作标识符 | 2022 单选4 |
| 5 | 头文件混淆 | strcmp 用 stdio.h | 字符串函数在 string.h | 2024 单选2 |
| 6 | 错误阶段混淆 | 数组越界当编译错误 | 越界/除0是运行错误 | 2026 单选8 |
| 7 | 预处理加分号 | #include 后写 ; | #include 以 # 开头,不加分号 | 经典 |
| 8 | return 0 省略 | 以为可省略 | 表示正常退出,考试常问 | 经典 |
| 9 | 语句跨行 | 以为一行只能一条语句 | 一条语句可分多行 | 2024 单选1-D |
| 10 | main 位置 | 以为 main 必须在开头 | main 可出现在任何位置,但有且仅有一个 | 闭卷经典 |
📌 最值钱的一条:第 6 条(编译/链接/运行错误)是 2026 考纲新增重点,题型固定为"下列说法正确的是"——用"语法找编译、符号找链接、越界除零找运行"口诀秒杀。
⑥ 📝【课后自测练习题】
1. 下列选项中,可用作 C 语言合法标识符的是( )(2022 真题风格)
A. 2abc B. _xyz C. float D. a+b
2. 下列关于 C 语言注释的说法,正确的是( )(2024 真题风格)
A. 注释只能写在程序最开头 B. \N 可以开始一行注释 C. 注释可以用 /* */ 包含多行 D. 注释中不能出现中文
3. C 语言中,使用 strlen 函数需要包含的头文件是( )(2024 真题风格)
A. stdio.h B. string.h C. math.h D. stdlib.h
4. 下列关于编译错误、链接错误、运行错误的说法,错误的是( )(2026 真题风格)
A. 缺少分号通常属于编译错误 B. 数组越界通常在运行阶段才被发现 C. 链接错误常见于符号找不到定义 D. 除以 0 属于编译错误
👆 点击展开参考答案与解析
第1题:B. _xyz
- A
2abc:数字开头 ❌ - B
_xyz:下划线开头,合法 ✅ - C
float:关键字 ❌ - D
a+b:含特殊符号+❌
第2题:C. 注释可以用 /* */ 包含多行
- A 错:注释位置任意(2023 判断1)
- B 错:C 语言没有
\N注释(2024 单选1) - C 对:
/* */就是多行注释 ✅ - D 错:注释里可以出现中文
第3题:B. string.h
strlen是字符串函数,在string.h(和 strcmp/strcpy/strcat 同族)
第4题:D. 除以 0 属于编译错误
- 除以 0 是运行错误(运行时才崩),不是编译错误
- A/B/C 说法均正确(2026 单选8 口径)
📝 原有闭卷真题挑战(保留原内容)
(点击下方空白查看答案)
1. C程序的基本单位是?
2. main函数的位置?
3. 以下哪个是合法标识符?
A. 2ab B. _abc C. int D. a+b
4. C程序的执行过程顺序?
5. #include < > 和 #include " " 的区别?👆 点击展开答案
- 函数
- main函数可以出现在程序的任何位置——但一个程序有且只有一个main函数
- B. _abc(A数字开头,C关键字,D含特殊符号)
- 预处理 → 编译 → 汇编 → 链接
< >只在系统目录搜索," "先当前目录再系统目录
📖 教材习题对照
| 教材习题 | 知识点 | 难度 |
|---|---|---|
| 习题1.1 | C语言的特点 | ⭐ |
| 习题1.4 | 编译与链接的区别 | ⭐⭐ |
| 习题1.5 | 标识符判断 | ⭐ |
| 习题1.6 | 编写第一个C程序 | ⭐ |
对应教材:谭浩强《C程序设计》第5版 → 第1章 程序设计和C语言 对应考试大纲:考点1 — C语言基本概念
📺 配套视频
复习到本考点 → 先看视频补讲,再刷上面「闭卷挑战」。
- 升本啦 P2-P3 C语言概述与第一个程序 · 共24P 按教材分帧
- 强哥 P4~P18 细化打点 · 134P 单考点