1586 字
8 分钟
【笔记】LINUX+c语言零基础笔记
2025-07-23

Python/C语言与Linux入门学习笔记

前言#

最近在入门Python和C语言,Linux算是后期基础,所以先学习Linux打基础:

  1. 优先学习Linux
  2. 使用VMware搭建虚拟机
  3. 远程连接工具选择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内核 + 系统库 + 系统软件
  • 发行版本质:打包好的Linux操作系统

常见发行版对比#

名称特点适用场景
RedHatIBM维护,企业级付费版商业服务器
CentOSRedHat的社区免费版企业服务器
Ubuntu界面友好,软件生态丰富新手/桌面
Deepin国产优秀发行版中文用户
中标麒麟国内政府/企业专用国产化替代

三、虚拟机配置实战#

工具选择#

  • VMware:商业版(稳定但收费)
  • VirtualBox:免费开源版

虚拟机与宿主机数据完全隔离

VMware安装要点#

  1. 安装时选择中文界面
  2. 验证安装成功:网络适配器中会出现两个虚拟网卡
    • 若未出现:通过编辑 虚拟网络编辑器重置配置

FinalShell连接技巧#

  1. 查看虚拟机IP:编辑 虚拟网络编辑器
  2. 在FinalShell中输入IP和凭据连接

快照管理#

系统恢复神器:创建系统还原点(占用空间远小于完整镜像)

  • 操作路径右键虚拟机 快照
    • 创建快照:记录当前状态
    • 恢复快照:一键回退到保存点
    • 建议:保留2-3个关键状态快照

四、Linux基础命令#

文件系统特性#

  • 根目录:所有文件的最终父目录(用/表示)
    • 没有Windows中的盘符概念
    • 正斜线/:Linux路径分隔符
    • 反斜线\:转义字符(非路径分隔符)

命令通用格式#

Terminal window
命令 -[选项] [参数]

核心命令详解#

命令功能常用选项记忆技巧
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文件)

进阶命令#

Terminal window
# 查找命令位置
which ls
# 按名称查找文件
find / -name 'abc*'
# 按大小查找文件
find /home -size +100M
# 输出内容到文件
echo "Hello" 1.txt # 覆盖写入
echo "World" 1.txt # 追加写入

五、C语言基础入门#

开发环境配置#

  1. 安装MinGW-w64(GCC编译器)
  2. 添加环境变量:Path += MinGW\bin
  3. 验证安装: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开头)
  • 数值存储形式

    graph LR
    A[原码] -- 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字节
  • 野指针:未初始化的危险指针

七、学习心得#

  1. Linux操作

    • 目录结构理解是基础(尤其/根目录概念)
    • 命令选项组合提高效率(如ls -alh
  2. C语言要点

    • 指针是C语言的灵魂
    • 内存管理需要时刻关注
    • 编译器工作原理(ESC→ISO四阶段)
  3. 效率工具

    • VS Code快捷键:
      • Ctrl+K+C:注释代码
      • Ctrl+K+U:取消注释
      • Ctrl+K+F:格式化

    记忆法:KFC组合键

下阶段目标:通过Qt框架开发图形界面程序

【笔记】LINUX+c语言零基础笔记
https://fuwari.vercel.app/posts/笔记linuxc语言零基础笔记/
作者
喵呜
发布于
2025-07-23
许可协议
CC BY-NC-SA 4.0