Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions docs/qna/c-pre-knowledge/How-C-Compiler.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# 编译器(Compiler)
这篇文章将初步告诉你计算机如何“看懂”你的代码。

## 计算机能看懂什么
计算机能且只能直接看懂**机器语言**,也就是由 0 和 1 组成的二进制指令集,几乎不可读。

例如:
```
1011000000000001
```
`x86_64`汇编定义的指令来解释它,是:
```
mov al, 1
```
- 前八位 `10110000` 可以理解为“将立即数放到`al`寄存器”的操作码
- 后八位 `00000001` 是要存入的数字 1。

机器语言对人类很不友好,但cpu需要它来理解需要执行什么指令。我们(通常)不能直接使用 0/1 编程——这就是编译器存在的理由:把人能读、能写的高级语言(如 C)翻译成机器理解并执行的指令。

## 编译器做了什么
TODO
23 changes: 23 additions & 0 deletions docs/qna/c-pre-knowledge/Where-C-editor-n-ide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# 编辑器(Editor)&&集成开发环境(Integrated Development Environment)

## 编辑器
### 什么是编辑器?
编辑器(或者说是文本编辑器)本是纯文本处理工具,仅用于编写/修改代码(如VS Code、记事本、Sublime Text),没有代码分析、编译等额外功能。
但为了方便大家编程,编辑器接入了扩展功能,使编码更加准确高效。我们称其为代码编辑器。
- 语法高亮:按照编程语言规则(c,python,c++,java)用不同颜色标注关键字,变量,函数,使得代码更易读
- 智能补全;基于代码规则和上下文自动提示代码片段(vscode的‘tap’代替思考)
### 常见的编辑器
- Windows记事本/Mac文本编辑/Linux vim
- VS code/GitHub网页编辑器
- vscode环境配置请移步至....


## 集成开发环境(IDE)Dev-C++/Code::Blocks/X-code(Mac)
### 什么是集成开发环境?
集成开发环境



### 下载
- Dev-C++(Windows)下载:
- Code::Blocks(windows)下载:
1 change: 1 addition & 0 deletions docs/qna/c-pre-knowledge/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#index.md
Copy link

Copilot AI Nov 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The index file contains only a placeholder comment '#index.md' without any actual documentation content. Consider adding meaningful content such as an introduction to C pre-knowledge topics, a table of contents, or links to related sections.

Suggested change
#index.md
# C Pre-Knowledge
Welcome to the C Pre-Knowledge section! This documentation provides an overview of the foundational concepts you should understand before diving into C programming.
## Table of Contents
- [Introduction to Programming Concepts](./intro-to-programming.md)
- [Basic Computer Architecture](./computer-architecture.md)
- [Number Systems and Data Representation](./number-systems.md)
- [Algorithms and Flowcharts](./algorithms-flowcharts.md)
- [Related Resources](./related-resources.md)
## Getting Started
If you are new to programming or want to refresh your knowledge before learning C, start with the topics above. Each section provides explanations, examples, and links to further reading.
---
For questions or feedback, please refer to the [Q&A section](../qna.md).

Copilot uses AI. Check for mistakes.
36 changes: 36 additions & 0 deletions docs/qna/c-pre-knowledge/why-C.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# 为什么要学 C 语言

学 C 语言的核心价值可以从以下三个维度来理解:

## 一、深入理解计算机底层
C 语言贴近硬件,能够直接操作内存并与底层资源交互,帮助你理解代码如何被计算机执行:

- 明白 `int a = 1;` 并不仅仅是“定义一个变量”,而是在内存中为该变量分配空间并存储二进制表示(在常见的 32/64 位平台上,`int` 往往占 4 字节,但不同平台可能不同)。
- 理解“编译”是把人类可读的源码翻译成 CPU 能执行的机器指令(或汇编),以及汇编、链接的基本流程。
- 学会使用指针、理解栈和堆、内存管理、对齐、调用约定等底层概念,这些知识会让你在调试、性能优化和系统设计时有更直观的判断力。

## 二、多领域的基础工具
C 在很多核心领域仍然不可或缺,学会后能覆盖很多高价值场景:

- 系统开发:操作系统内核(如 Linux)、驱动程序、固件与嵌入式系统(单片机、智能设备)。
- 底层软件:编译器、数据库底层实现、网络协议栈等。
- 高性能场景:数值计算、工业控制、部分游戏引擎底层模块(多数现代大型游戏引擎使用 C++,但底层思想与性能优化与 C 密切相关)。
- 其它:高性能网络服务、实时系统、微控制器开发等。

学会 C 可以让你更容易进入这些领域或理解这些领域的源码与设计。

## 三、锻炼基本功,降低后续学习成本
C 的语法和编程风格要求你显式说明类型并手动管理资源,这会培养良好的工程习惯:

- 关注内存与资源管理,学会发现和避免内存泄漏、悬空指针等常见问题。
- 熟练掌握流程控制(`if`、`switch`、`for`、`while`)与函数设计,这些结构是大多数编程语言的共通模板。
- C 的严谨性迫使你理解计算机在做什么(数据在虚拟内存中如何存储、函数调用如何进行、IO 的原理等),对这些内容的理解会让你在转学其他语言(如 Python、C++、Go、Rust)时事半功倍。

## 注意事项
- C 功能强但容易出现低级错误(越界、悬指针、未定义行为等),调试难度相对较高。学习时务必养成良好的编码规范、重视调试工具使用。
- 在现代软件工程中,选择 C 还是更高层语言应根据项目需求(开发效率 vs. 执行效率 vs. 可维护性)权衡。

## 简短结论
- 如果你的目标是做底层开发、嵌入式系统、操作系统或追求高性能,学 C 是非常必要的基础。
- 如果你想打好编程基础、理解计算机原理,C 是一块极好的跳板。