1586 字
8 分钟
【笔记】LINUX+c语言零基础笔记
2025-07-23
Python/C语言与Linux入门学习笔记
前言
最近在入门Python和C语言,Linux算是后期基础,所以先学习Linux打基础:
- 优先学习Linux
- 使用VMware搭建虚拟机
- 远程连接工具选择FinalShell
PS:刚才才知道Markdown文档按两下回车就会跳出当前编辑的列表/大纲
一、计算机硬件基础
核心组件理解
- CPU:计算机的大脑(笔记本CPU后缀”U”主打续航,可能性能不够高)
- 内存:临时存储的黑板(主要看DDR代数和频率,睿频频率越高效率越高)
- 硬盘:永久存储的课本
- SSD:Solid State Drive(固态硬盘,现在很便宜了)
- HSD:Hybrid Solid Drive(混合硬盘)
- HDD:Hard Disk Drive(机械硬盘)
- 操作系统:硬件与软件的桥梁
- 没有操作系统的电脑称为”裸机”
PS:发现微软系统路径多用”ms”前缀,如mspaint(画图)、msconfig(系统配置)
二、Linux系统认知
核心概念
- Linux发行版 = Linux内核 + 系统库 + 系统软件
- 内核下载地址:kernel.org
- 发行版本质:打包好的Linux操作系统
常见发行版对比
| 名称 | 特点 | 适用场景 |
|---|---|---|
| RedHat | IBM维护,企业级付费版 | 商业服务器 |
| CentOS | RedHat的社区免费版 | 企业服务器 |
| Ubuntu | 界面友好,软件生态丰富 | 新手/桌面 |
| Deepin | 国产优秀发行版 | 中文用户 |
| 中标麒麟 | 国内政府/企业专用 | 国产化替代 |
三、虚拟机配置实战
工具选择
- VMware:商业版(稳定但收费)
- VirtualBox:免费开源版
虚拟机与宿主机数据完全隔离
VMware安装要点
- 安装时选择中文界面
- 验证安装成功:网络适配器中会出现两个虚拟网卡
- 若未出现:通过
编辑 虚拟网络编辑器重置配置
- 若未出现:通过
FinalShell连接技巧
- 查看虚拟机IP:
编辑 虚拟网络编辑器 - 在FinalShell中输入IP和凭据连接
快照管理
系统恢复神器:创建系统还原点(占用空间远小于完整镜像)
- 操作路径:
右键虚拟机 快照- 创建快照:记录当前状态
- 恢复快照:一键回退到保存点
- 建议:保留2-3个关键状态快照
四、Linux基础命令
文件系统特性
- 根目录:所有文件的最终父目录(用
/表示)- 没有Windows中的盘符概念
- 正斜线
/:Linux路径分隔符 - 反斜线
\:转义字符(非路径分隔符)
命令通用格式
命令 -[选项] [参数]核心命令详解
| 命令 | 功能 | 常用选项 | 记忆技巧 |
|---|---|---|---|
ls | 查看目录内容 | -a(显示隐藏文件) | “list”缩写 |
-l(列表展示详情) | “list”的首字母 | ||
-h(人性化文件大小) | “human”缩写 | ||
pwd | 显示当前路径 | 无 | ”print work directory” |
cd | 切换目录 | ~(用户目录) | “change directory” |
-(返回上次目录) | |||
..(上级目录) | |||
mkdir | 创建目录 | -p(创建多级目录) | “make directory” |
cp | 复制文件/目录 | -r(递归复制目录) | “copy” |
mv | 移动/重命名 | 无 | ”move” |
rm | 删除文件/目录 | -f(强制删除) | “remove” |
-r(递归删除目录) |
安全规范:删除文件时不加-r参数,删除任何内容都加-f确认
示例:rm -rf *.txt(删除当前目录所有txt文件)
进阶命令
# 查找命令位置which ls
# 按名称查找文件find / -name 'abc*'
# 按大小查找文件find /home -size +100M
# 输出内容到文件echo "Hello" 1.txt # 覆盖写入echo "World" 1.txt # 追加写入五、C语言基础入门
开发环境配置
- 安装MinGW-w64(GCC编译器)
- 添加环境变量:
Path += MinGW\bin - 验证安装:
gcc -v
HelloWorld深度解析
#include <stdio.h // 预处理指令:包含标准IO函数
int main() { // 唯一程序入口 printf("Hello World!\n"); // \n为换行符 return 0; // 返回操作系统状态码}编译四阶段:
graph LR A[预处理.c→.i] -- B[编译.i→.s] B -- C[汇编.s→.o] C -- D[链接.o→.exe]记忆口诀:ESC对应预处理参数,ISO对应文件后缀
核心语法要素
基础结构
#include <stdlib.h // 系统库头文件
int main() { system("calc"); // 调用系统计算器 return 0;}实验发现:system()实际调用的是CMD命令(calc可替换为dir等命令)
数据类型与内存
-
寄存器命名规则:
- 16位:
ax,bx(两位名称) - 32位:
eax,ebx(e开头) - 64位:
rax,rbx(r开头)
- 16位:
-
数值存储形式:
graph LRA[原码] -- B[反码]B -- C[补码]- 补码 = 反码 + 1(0保持不变)
- 十六进制:
0xF=1111,0x1=0001
输入输出控制
格式符对照表:
| 格式符 | 用途 | 示例 |
|---|---|---|
%d | 整型 | printf("%d", 10) |
%f | 浮点型 | printf("%.2f", 3.14159) |
%c | 字符型 | printf("%c", 'A') |
%s | 字符串 | printf("%s", "Hello") |
%% | 输出%符号 | printf("100%%") |
输入注意事项:
int age;scanf("%d", &age); // &为取址符不可省略
// 字符输入的特殊性char ch = getchar(); // 接收单个字符运算符优先级
从高到低:
小括号() 单目! ++ -- 算术* / % 关系 = 逻辑&& || 赋值=
流程控制
switch结构:
switch(表达式) { case 1: // 代码块 break; // 必须添加break! case 2: // 代码块 break; default: // 默认情况 // 代码块}goto跳转:
goto label; // 跳转到标签// ...代码...label: // 标签定义 printf("跳转至此");六、编程实践技巧
常用C库函数
// math.h数学库pow(2, 10); // 1024(幂运算)sqrt(25); // 5.0(平方根)ceil(3.2); // 4.0(向上取整)floor(3.8); // 3.0(向下取整)
// time.h时间库time_t now = time(NULL); // 获取当前时间戳数组与指针
数组基础:
int arr[3] = {1,2,3}; // 声明初始化printf("%d", arr[0]); // 访问元素(索引从0开始)指针本质:
int var = 10;int *ptr = &var; // ptr存储var的内存地址printf("%p", ptr); // 输出内存地址重要概念:
- 32位系统指针占4字节,64位占8字节
- 野指针:未初始化的危险指针
七、学习心得
-
Linux操作:
- 目录结构理解是基础(尤其
/根目录概念) - 命令选项组合提高效率(如
ls -alh)
- 目录结构理解是基础(尤其
-
C语言要点:
- 指针是C语言的灵魂
- 内存管理需要时刻关注
- 编译器工作原理(ESC→ISO四阶段)
-
效率工具:
- VS Code快捷键:
Ctrl+K+C:注释代码Ctrl+K+U:取消注释Ctrl+K+F:格式化
记忆法:KFC组合键
- VS Code快捷键:
下阶段目标:通过Qt框架开发图形界面程序
【笔记】LINUX+c语言零基础笔记
https://fuwari.vercel.app/posts/笔记linuxc语言零基础笔记/