
C语言计算机基础为什么学C语言需要了解计算机基础C语言是一门贴近硬件的编程语言它允许直接操作内存地址和寄存器。如果不了解计算机的基本组成和工作原理就很难理解C语言中的指针、内存、编译等核心概念。计算机的组成计算机的定义计算机能运行计算以及逻辑处理的设备硬件组成计算机的物理部件计算机运行的程序和数据计算机的六大部件中央处理器CPU负责控制 指令执行和数据计算内存临时存储程序运行时的指令和数据输入设备向计算机输入数据输出设备将计算机处理结果输出外存设备永久存储数据硬盘、U盘网络实现设备间的数据传输与通讯计算机工作原理存储程序程序和数据预先存储在内存中程序控制CPU按照指令顺序逐条执行操作计算机语言语言类型特点机器语言二进制代码可直接控制硬盘执行效率最高汇编语言用助记符表示机器指令需通过汇编器翻译为机器语言高级语言贴近人类自然语言可读性强需要编译、解释执行C语言简史与特点C语言的起源其前身是 B 语言B 语言由美国贝尔实验室的 Ken Thompson肯·汤普森于 1969 年开发并用其编写了初版 UNIX 系统1972 年美国贝尔实验室的 Dennis Ritchie丹尼斯·M·里奇在 B 语言基础上开发出 C 语言C 语言提供了丰富的数据类型和标识符使程序编写更高效便捷1973 年初C 语言主体完成汤普森和里奇随即用 C 语言完全重写了 UNIX 系统。C语言的标准为推动 C 语言规范化发展美国国家标准协会ANSI于 1982 年成立委员会制定 C 语言标准年份标准名称说明1989C89ANSI CANSI 发布首个完整 C 语言标准1990C90ISO CISO 一字不改采纳 C891999C99ISO 发布修订完善后的标准2011C11ISO/IEC 9899:20112018C18主要修复 C11 的技术漏洞2023C23新增#embed、nullptr、typeof/typeof_unqual、constexpr增强、十进制浮点类型、空初始化器{}、属性语法[[]]等特性C语言特点简洁高效支持底层硬件操作可移植性强符合标准的C程序可在不同平台适合结构化编程代码模块化程度高容易维护和调试生产代码质量高执行速度快C语言程序的开发过程开发的三个步骤编辑程序员编写源程序编译编译器将源代码转换为可执行的二进制指令文件运行操作系统加载并执行可执行二进制程序C语言程序编译的四个过程预处理处理宏定义头文件包含注释等将头文件内容直接拷贝到当前文件。预处理需要用到预处理器编译对预处理后的代码进行语法分析语义检查生成汇编语言代码。编译要用到编译器汇编将汇编代码转换为二进制代码生成目标文件。汇编要用到汇编器链接将目标文件与系统库文件其他目标文件合并生成可执行文件。链接要用到链接器编译命令预处理gcc -E *.c -o *.i*.c → *.i生成预处理后的 C 代码文本文件编译gcc -S *.c -o *.s*.i/*.c → *.s生成汇编代码文本文件汇编gcc -c *.s -o *.o*.s → *.o将汇编代码转为二进制目标文件注gcc -c *.c等价于预处理编译汇编三步链接gcc *.c -o **.o → 可执行文件生成可执行二进制文件C语言程序的基本结构一个简单的C语言程序功能在控制台输出“Hello World”#include stdio.h int main(int argc,char *argv[]) { printf(Hello World!\n); return 0; }#运行结果 yueqianyueqian-vm:~$ gcc demo01.c -o demo01 yueqianyueqian-vm:~$ ./demo01 Hello World!程序结构分析注释用于解释代码逻辑仅给程序员阅读。注释在编译的早期翻译阶段(预处理)被替换为空格不参与后续编译。预处理指令以#开头用于包含头文件、宏定义等如#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语言编程规范C语言编程需要遵循以下规范提升代码的可读性和可维护性缩进格式推荐缩进4个空格或配置编辑器将Tab键显示宽度设为4个字符统一代码层级。足够注释对于关键代码如函数功能、复杂逻辑、变量含义添加注释。合适空行预处理指令与函数之间、函数与函数之间、全局变量与函数之间添加空行区分代码模块{}对齐不推荐Java风格推荐C/C风格分层缩进与模块化函数体内的代码按逻辑层次缩进复杂逻辑拆分模块化单句单行不将多条语句写在同一行标识符命名函数名、变量名等都叫标识符命名要见名知意使用英文单词或短语避免无意义的字母C语言中的注释C语言注释分为单行注释和多行注释。作用是解释代码屏蔽临时无用代码、不参与编译在预处理阶段删除。单行注释格式用//开头注释从//到行尾适用场景变量说明、常量说明、函数调用语句、简单逻辑注释语法// 注释内容多行注释格式用/*开头以*/结尾可单行可跨多行不可嵌套适用场景语法/* 注释内容 注释内容 */ /* 注释内容 */