计算机基础为什么学C语言需要了解计算机基础C语言是一门贴近硬件的编程语言它允许直接操作内存地址和寄存器。如果不了解计算机的基本组成和工作原理就很难理解C语言中的指针、内存、编译等核心概念。计算机的组成计算机的定义与组成定义能进行计算以及逻辑处理的设备。组成软件计算机中运行的程序和数据硬件计算机的物理部件内存条、CPU硬盘等计算机的六大部件类型功能说明中央处理器CPU)负责控制指令执行和数据计算内存用于临时存储程序运行时的指令和数据输入设备指向计算机输入数据如键盘鼠标扫码枪等输出设备指将计算机处理结果输出如显示器打印机等外存设备永久存储数据如硬盘U盘等网络实现设备间的数据传输与通信计算机的工作原理程序存储程序和数据预先存储在内存中程序控制CPU按照指令顺序逐条执行计算机语言语言类型特点机器语言二进制代码可直接控制硬件效率最高汇报语言用助记符表示机器指令需通过汇编器翻译为机器语言高级语言贴近人类自然语言可读性强需要编译/解释执行C语言简史与特点2.2.1 C语言的起源其前身是 B 语言B 语言由美国贝尔实验室的 Ken Thompson肯·汤普森于 1969 年开发并用其编写了初版 UNIX 系统1972 年美国贝尔实验室的 Dennis Ritchie丹尼斯·M·里奇在 B 语言基础上开发出 C 语言C 语言提供了丰富的数据类型和标识符使程序编写更高效便捷1973 年初C 语言主体完成汤普森和里奇随即用 C 语言完全重写了 UNIX 系统。2.2.2 C语言的标准为推动 C 语言规范化发展美国国家标准协会ANSI于 1982 年成立委员会制定 C 语言标准年份标准名称说明1989C89ANSI CANSI 发布首个完整 C 语言标准1990C90ISO CISO 一字不改采纳 C891999C99ISO 发布修订完善后的标准2011C11ISO/IEC 9899:20112018C18主要修复 C11 的技术漏洞2023C23新增#embed、nullptr、typeof/typeof_unqual、constexpr增强、十进制浮点类型、空初始化器{}、属性语法[[]]等特性2.2.3 C语言特点简洁高效支持底层硬件操作可直接访问内存地址操作寄存器可移植性强、符合标准的C程序可在不同平台Windows、Linux、嵌入式设备间轻松移植适合结构化编程代码模块化程度高、容易维护、容易调试生成代码质量高、执行速度快接近汇编语言C语言程序的开发过程开发的三个步骤1.编辑由程序员编写的源代码程序.c文件2.编译由编译器将源代码转换为计算机可执行的二进制指令文件3.运行由操作系统加载并执行二进制程序C语言程序编译的过程编译的四个过程编译步骤功能说明命令文件类型转换预处理是处理宏定义#define头文件#include、注释等将头文件内容直接拷贝到当前文件。预处理需要用到预处理器gcc -E *.c -o *.i.c→.i编译对预处理后的代码进行语法分析语义检查生成汇编语言代码。编译要用到编译器gcc -S *.c -o *.s.i/.c→.s汇编将汇编代码转换为二进制代码生成目标文件。汇编要用到汇编器gcc -c *.s -o *.o.s→.o链接将目标文件与系统库文件、其他目标文件合并生成可执行文件。链接要用到链接器gcc *.c -o *.o→可执行文件C语言的基本结构简单C语言程序示例代码/************************************************************************* File Name: dem01.c Author: XXX Description:程序结构第一个C语言程序输出 Hello World Created Time: 2026年07月27日 星期一 20时35分42秒 ************************************************************************/ ​ #include stdio.h //引入输入输出标准库头文件 ​ int main(int argc,char *argv[]) //主函数一个 .c 程序里有且仅有一个 { printf(hello world\n); // C标准库提供的函数向控制台输出 Hello World! \n是换行的意思需要引入stdio.h ​ return 0; } ​ //运行结果 hello worldCV大法Linux终端 → WindowsCtrl Shift C→Ctrl VWindows → Linux终端Ctrl C→Ctrl Shift V程序结构分析注释用于解释代码逻辑仅给程序员阅读。注释在编译的早期翻译阶段(预处理阶段)被替换为空格不参与后续编译。预处理指令以#开头用于包含头文件、宏定义等如#include stdio.h#define PI 3.14159主函数main函数程序的唯一入口由操作系统通过程序启动机制自动调用不能被程序员自定义函数调用。函数组成函数头说明函数的返回值类型、函数名和参数列表。在C语言中int main(void)明确表示无参数int main()表示参数未指定与C不同C中二者语义有区别。若无参数建议统一使用int main(void)或int main(int argc, char *argv[])函数体用{}括起来包含变量声明和语句执行的部分语句以;结尾函数调用语句调用已定义的函数如printf是标准库中的输出函数C语言的程序规范格式缩进推荐缩进4个空格或配置编辑器将Tab键显示宽度设为4个字符统一代码层级。足够注释对于关键代码如函数功能、复杂逻辑、变量含义添加注释。适当空行预处理指令与函数之间、函数与函数之间、全局变量与函数之间添加空行区分代码模块。示例代码/************************************************************************* File Name: demo02.c Author: XXX Description: 编程规范宏定义与空行使用示例 ************************************************************************/ // 包含头文件预处理时会将对应的.h文件代码全部拷贝到当前文件位置 #include stdio.h #include stdlib.h ​ // 宏定义预处理阶段会使用宏值替换掉宏名称称作宏展开 #define R 2 // 定义一个半径 #define PI 3.14159 ​ int main(int argc, char *argv[]) { // 向控制台输出hello world! printf(hello world!\n); ​ // 计算圆的面积 double area PI * R * R; //预处理double area 3.14159 * 2 * 2 printf(%lf\n, area); ​ return 0; } ​ //运行结果 hello world! 12.566360{}对齐#不推荐以下分格多用在Java int fun(){ ... } ​ #推荐风格多用于C/C int fun() { ... }分层缩进与模块化函数体内的代码按逻辑层次缩进复杂逻辑拆分模块化int fun() { if (...) { for(...) { printf(); } } if (...) { printf(); } }单句单行不将多条语句写在同一行int main() { // 不推荐的写法 printf(第1行\n); printf(第2行\n); printf(第3行\n); // 推荐的写法 printf(第1行\n); printf(第2行\n); printf(第3行\n); }标识符命名函数名、变量名等都叫标识符命名要见名知意使用英文单词或短语避免无意义的字母int main() { // 不推荐的写法 int a 21; int b 168; int c 190; // 推荐的写法 int age 21; // 年龄21 int height 168; // 身高168 int weight 190; // 体重190 return 0; }C语言中的注释C语言中代码注释分为单行注释和多行注释不参与代码编译在预处理前计算机系统就删除了。注释分类语法格式使用场景单行注释用//开头注释到这一行结束变量说明常量说明函数调用语句等多行注释用/* 注释内容 */可跨行注释但不能嵌套头文件说明函数功能说明等示例代码#include stdio.h ​ int main(int argc,char *argv[]) { //单行注释 //printf(int的大小%ld\n,sizeof(int)); ​ //多行注释 /*int a10; printf(%d\n,a);*/ ​ return 0; }备注文档注释扩展本质上还是多行注释用于生成标准化文档格式更规范一般替代传统的多行注释。示例代码/** * brief 函数名main * author 开发者姓名 * date 开发时间 * param argc 解释参数 * param argv 解释参数 * return 返回值说明 */