C语言基本的常识及相关原理
《C语言基础与开发规范》摘要:介绍了C语言程序结构三要素(声明、定义、调用),重点讲解了头文件、main函数、printf函数和转义字符的使用方法。详细说明了man帮助手册的分册分类(1-3册为核心)和查询技巧,推荐了cppreference等在线文档资源。最后强调了代码规范要求,包括标识符命名规则、缩进格式、空格使用等排版技巧,并提供了VS Code等编辑器的快捷操作方式。
一、C 语言基本结构
1. 程序的三大核心要素
- 声明:告诉编译器函数或变量的存在(类型、名称),不分配内存。
示例:extern int funcA(void);(声明函数funcA)、extern int num;(声明变量num)。
-
- 作用:确保编译器在遇到调用时能识别符号,避免语法错误。
- 关键字extern:提示编译器在整个工程中查找符号的定义(初学者建议显式添加)。
- 定义:具体实现函数或变量,分配内存。
示例:int num = 100;(变量定义)、int funcA(void) { ... }(函数定义)。
- 调用:执行已定义的函数或使用已定义的变量。
流程:编译器先检查声明,再跳转到定义处执行。
2. 头文件(.h)
- 作用:包含函数、变量的声明,供编译器识别(如stdio.h包含printf的声明)。
- 包含方式:
- #include <stdio.h>:从系统环境目录查找头文件(系统库)。
- #include "myheader.h":先从工程目录查找,再从系统目录查找(自定义头文件)。
- 预处理:#开头的语句为预处理指令,在程序运行前执行(如包含头文件)。
3. 主函数(main)
- 特殊性:程序的唯一入口,一个工程中必须且只能有一个main函数。
- 结构:
int main(void) { ... } // 不接收命令行参数 int main(int argc, char const *argv[]) { ... } // 接收命令行参数(argc:参数个数;argv:参数列表) |
- 返回值:类型为int,表示程序执行状态(0 为正常,非 0 为异常),返回给上一级进程。
4. printf 函数(标准输出)
- 功能:向终端输出指定格式的数据,原型为int printf(const char *format, ...)。
- 格式控制符(核心):
控制符 |
含义 |
示例 |
%d |
十进制整数 |
printf("%d", 100); |
%s |
字符串 |
printf("%s", "abc"); |
%c |
字符 |
printf("%c", 'A'); |
%f |
浮点型 |
printf("%f", 3.14); |
%p |
地址 / 指针 |
printf("%p", &num); |
%o |
八进制整数 |
printf("%o", 10); |
%x |
十六进制整数 |
printf("%x", 16); |
- 输出缓冲区刷新条件:
- 遇到换行符\n(推荐);
- 程序 / 函数结束;
- 调用fflush(stdout)强制刷新;
- 缓冲区满。
5. 转义字符
- 基本转义字符(常用):
- \n:换行;\t:水平制表符;\\:反斜杠;\":双引号;\r:回车(光标移至行首,不换行)。
- 扩展转义字符:
- 颜色控制:\033[背景色;字体色m(如\033[40;32m表示黑底绿字,\033[0m关闭特效);
- 光标控制:\033[x;yH定位光标、\033[2J清屏等。
一、基本转义字符
\n - 换行符。将光标移动到下一行的开始位置。*****
\t - 水平制表符。通常会将光标移动到下一个制表位。***
\\ - 反斜杠。用来表示实际的反斜杠字符。*
\' - 单引号。用来表示实际的单引号字符。*
\" - 双引号。用来表示实际的双引号字符。*
\? - 问号。虽然问号本身不需要转义,但在某些情况下为了防止与三字母序列混淆,可能会用到。
\a - 警报声。发出警报声。
\b - 退格。将光标向后移动一个字符的位置。
\f - 换页。跳转到下一页的开始位置。
\r - 回车。将光标移动到当前行的开始位置,但不换行。***
\v - 垂直制表符。通常会将光标移动到下方的垂直制表位。
\ooo - 其中ooo是1到3位的八进制数
\xhh - 其中hh...是一个或多个十六进制数字。(\101 和 \x41 都代表大写字母 'A' 的ASCII码值65)
二、背景色、字体色显示转义字符
a、格式:\033[40-47;30-37m
b、说明:
40/30: 黑色(背景色/字体色)
41/31: 红色
42/32: 绿色
43/33: 黄色
44/34: 蓝色
45/35: 紫色
46/36: 深绿色
47/37: 白色
c、使用:
printf("\033[40;32m《学生信息管理系统》\n");
三、显示效果转义字符
\033[0m // 关闭特效
\033[1m // 高亮效果
\033[4m // 下划线效果
\033[5m // 闪烁效果(只有ubuntu18.04系统及以上才具备这个效果)
\033[7m // 反显(交换前景色和背景色)
\033[8m // 消隐(文本不可见)
四、光标设置
\033[2J // 清除屏幕
\033[x;yH // 定位光标(x:横轴坐标, y:纵轴坐标)
\033[yA // 上移光标(y是纵轴移动的位置)
\033[yB // 下移光标
\033[xC // 右移光标(x是横轴移动的位置)
\033[xD // 左移光标
\033[H // 复位光标
\033[?25l // 隐藏光标
\033[?25h // 显示光标
\033[u // 恢复光标位置
\033[s // 保存光标位置
\033[K // 清除从光标到行尾的内容
6. return 语句
- 作用:结束当前函数并返回数据(若有)。
- 主函数中return 0表示程序正常结束,非 0 表示异常(返回值供其他进程判断状态)。
二、man 帮助手册与在线文档
1. man 手册(权威离线文档)
- 分册分类(共 9 册,核心为 1、2、3 册):
分册 |
内容 |
示例 |
1 |
可执行程序 / Shell 命令 |
man 1 ls(查ls命令) |
2 |
系统调用(内核提供的函数) |
man 2 open(查open系统调用) |
3 |
库函数(第三方库函数) |
man 3 printf(查printf函数) |
- 查询方法:
- 查看条目所在分册:man -f 条目(如man -f printf);
- 指定分册查询:man 分册 条目(如man 3 printf)。
- 安装:默认仅安装第 1 册,需手动安装其他分册:
sudo apt install manpages # 基础手册 sudo apt install manpages-dev # 开发相关手册 |
- 函数查询要点:通过man 3 函数名可获取:
- 函数作用(NAME);
- 头文件(SYNOPSIS,如#include <string.h>);
- 原型与参数(DESCRIPTION);
- 返回值(RETURN VALUE)。
2. 在线文档
三、代码风格规范
1. 标识符命名规则
- 允许包含字母、数字、下划线,必须以字母或下划线开头;
- 不可与系统关键字重名(如int、if);
- 命名需 “顾名思义”(如student_name而非a1)。
2. 格式规范
- 缩进:代码块({}内)必须缩进(通过Tab键控制);
- 空格:标点符号后加空格(如int n = 10;而非int n=10;);
- 空行:不同逻辑模块间加空行(如函数间、变量定义与逻辑代码间);
- 排版技巧:
- 整体左移:选中代码 + Shift+Tab;
- 整体右移:选中代码 + Tab;
- 注释 / 取消注释:选中代码 + Ctrl+/。
更多推荐
所有评论(0)