快速复习C语言
快速复习C语言
- Windows基础入门
- 了解Windows文件系统:
- C语言基础入门
- 第一天 安装与运行
- 编写与运行代码
- 第二天 C基础语法
不要怕失败,失败并不可怕,可怕的是失去勇气。
Windows基础入门
了解Windows文件系统:
绝对路径:从 “根”(盘符)开始,写全所有层级,走到哪都能找到它。
相对路径:以你当前所在的位置为起点,只写 “相对的位置”,换个地方就找不到了。
# 可能用到的Windows系统命令行cd全称change directory,切换目录/进入文件夹.代表当前目录(比如 .\hello.exe 就是运行当前目录下的程序)..代表上一级目录(比如你在 ct 里,写cd..就会回到 Desktop)固定写法:盘符:\文件夹名\子文件夹名,比如:D:\code = D 盘下面的 code 文件夹
注意是反斜杠\而不是斜杠/cd常用用法:
进入指定文件夹
cdD:\code返回上一级文件夹
cd..直接回到当前盘根目录
cd\先切盘符,再进文件夹:
D:cdcodeC语言基础入门
以下实验内容均基于Windows平台
第一天 安装与运行
在这之前首先要了解一些计算机基础知识:
计算机语言是人与计算机进行信息交互的所有语言的统称,包含程序设计语言与标记语言等多种类型。
而我们常说的计算机三大程序设计语言,是程序开发领域按照语言发展层级划分的三类核心编程语言,分别为机器语言、汇编语言与高级语言:
- 机器语言,又称二进制代码语言,由二进制 0、1 指令组成,编程人员需熟记各类指令二进制编码。机器语言是计算机唯一能够直接识别、无需翻译即可执行的语言,执行效率极高,但可读性差、移植性弱。
- 汇编语言。属于面向硬件的低级语言,使用英文助记符替代繁琐的二进制指令,更容易记忆与编写。汇编语言编写的源程序不能直接运行,必须通过汇编程序翻译成机器语言程序后,才能被计算机执行。
- 高级语言。高贴近人类自然语言与数学表达式,脱离硬件底层,易于学习和编写,常见有 C、C++、Java、Python 等。
高级语言程序不能直接执行,翻译执行分为两种方式:
- 编译型:一次性整体编译生成机器语言可执行文件;
- 解释型:边解释边逐行执行。
- Python依靠 Python 解释器
逐行读取源码 → 解释器直接翻译成机器指令交给 CPU 执行,中间只会生成PyCode 字节码,绝不生成汇编
流程:Python 源码 → 字节码 → 解释器转机器语言 - Java(半编译半解释)
源码.java →javac 编译 → 统一class 字节码,运行时由 JVM 虚拟机解析字节码,JVM 再转为对应平台机器语言,全程无汇编,靠虚拟机跨平台
通常把将高级语言转换为机器语言程序的软件系统称为翻译程序。翻译程序有以下三类:
- 汇编程序(汇编器):将汇编语言程序翻译成机器语言程序。
- 编译程序(编译器):将高级语言程序翻译成汇编语言或机器语言程序。
- 解释程序(解释器):将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行。
对于C语言来说,常用的编译器是gcc。
通过官网安装完成后,运行gcc --version,看到版本号就说明安装成功了。
编写与运行代码
用任意文本编辑器创建一个文件hello.c,写入以下内容:
#include<stdio.h>intmain(){printf("hello world!\n");return0;}
打开终端,进入文件所在的目录,执行以下命令编译并运行:
# 编译:将 hello.c 编译为可执行文件 hello# 这行命令执行了四个步骤:预处理→编译→汇编→链接gcc hello.c-ohello# 运行(Windows 用户运行 hello.exe 或 .\hello.exe).\hello注意:
其实如果是一步一步来的话,应该是:
-EPreprocess only;donot compile, assemble or link.-SCompile only;donot assemble or link.-cCompile and assemble, butdonot link.-o<file>Place the output into<file>.预处理:.c→.i
编译:.i→.s
汇编:.s→.o
链接:.o→.exe
或者这样:
又或者这样:
理解:-c 选项会自动完成「预处理 + 编译 + 汇编」这三步,只是停在生成 .o 文件的阶段,不做最后的链接。
把 GCC 想象成一条奶茶生产线:
- .c 源文件 = 茶包、奶、糖这些原料
- -E = 只泡好茶水,不做后面的步骤
- -S = 泡好茶 + 调好奶,变成半成品液体
- -c = 泡好茶 + 调好奶 + 装杯封盖,变成不能直接喝的 “半成品奶茶”(.o)
- 不加任何选项 = 从原料直接做成能喝的成品奶茶(.exe)
所以你用 -c,就是让生产线把 “泡好茶(预处理)” 这一步也自动做了,直接给你装杯的半成品。
拓展:
当你有很多 .c 文件,需要分开编译,最后再链接在一起
例如:
gcc-ca.c gcc-cb.c gcc a.o b.o-oall.exe
gcc + 各种参数 + 要编译的文件
–help 显示帮助信息✅
–version 显示编译器版本信息 ✅
-v 显示编译器调用的程序(详细版本+配置)✅
-dumpversion 只显示编译器版本号 ✅
-o 将输出放入指定文件(生成exe用)✅
-c 只编译、汇编,不链接 ✅
-S 只编译到汇编文件,不汇编、不链接
-E 只预处理,不编译
速记:
-E = Expand 展开(预处理展开宏、头文件)或者E = Early(早期处理)
-S = Assembly 汇编文件后缀.s
-c = Compile 编译(设计者约定:编译 + 汇编,不链接)
第二天 C基础语法
先看一个最简单的C语言程序:
#include<stdio.h>intmain(){printf("Hello, World!\n");return0;}{} 里面的代码,要缩进一层。{} 外面的代码,不缩进
为什么要这样?因为 {} 代表一个代码块(一个范围)。
为什么 C 语言要缩进?
缩进不是语法要求,但是为了让代码 “层次看得清”。C 语言编译器不看缩进,但人看缩进。
- 计划任务
- 完成任务
