- 博客(19)
- 收藏
- 关注
原创 数据结构与算法Day1(数据结构三要素 + 线性表与顺序表(顺序存储)实现)
数据结构可拆成三部分:逻辑结构、存储结构、运算。逻辑结构描述“元素关系”,存储结构描述“内存落地方式”,运算描述“如何操作数据”。后续学习任何结构都可按这三点逐项落地到代码。线性表是有序序列,除首尾外每个元素都有且仅有一个直接前驱和一个直接后继。实现中边界最重要:空表、首元素、尾元素、合法下标范围。顺序表把线性表元素存放在一段连续内存中。连续存储带来 O(1) 随机访问,但插入/删除通常需要搬移元素。顺序表常用结构:数组data[]保存元素,last保存“最后有效下标”。约定。
2025-12-17 09:00:44
756
原创 Linux操作系统使用及C高级编程日报Day17(Makefile基础规则、条件判断与 make 命令选项)
make是一个“自动化构建工具”,会根据Makefile里的目标 + 依赖 + 命令自动决定编译哪些文件。相比直接写增量编译统一管理规则一条命令完成多步操作。目标: 依赖1 依赖2 ... 命令1 命令2用变量统一管理编译器、编译选项和对象文件列表,可以极大减少重复。自动变量$@$^$<在规则内部代表“目标”、“所有依赖”、“第一个依赖”。模式规则%.o : %.c可以一条规则生成所有.o文件,用于多文件工程。Makefile 支持简单的条件编译,用于根据变量值或是否定义。
2025-12-11 21:42:43
862
原创 Linux操作系统使用及C高级编程日报Day16(GCC 编译流程、条件编译与 GDB 调试)
一个 C 程序从.c预处理 → 编译 → 汇编 → 链接。-E-S-c、最后默认链接。-g生成调试信息(给 GDB 用);-o指定输出文件名;-O0 / -O2控制优化级别;还有-Wall开启常见警告。条件编译用来在“编译前”决定哪些代码参与编译。。结合宏和命令行-D,可以轻松实现“调试版/发布版”、“平台切换”、“功能开关”等。-DNAME等价于。等价于。用-D可以在不改代码的情况下控制调试输出、日志等级、功能开关。调试前用-g -O0编译,保证有调试信息且执行路径清晰。break设置断点。
2025-12-09 15:29:43
728
原创 Linux操作系统使用及C高级编程日报Day14+15(共用体与内存管理)
结构体(struct):各成员顺序排列,每个成员占用各自独立的存储空间。共用体(union):所有成员共享同一块内存,起始地址相同。结构体大小 ≈ 各成员大小之和 + 对齐填充;共用体大小 ≈最大成员大小+ 对齐填充。使用共用体时,任何一次写入都会影响到其他成员的读出结果。共用体的大小由“最大成员大小”和“对齐规则”共同决定。结构体/共用体的sizeof结果不一定在所有平台上都相同,依赖编译器对齐策略。常见结论是:默认 4 字节对齐时,struct的大小可能是 12;使用。
2025-12-08 20:09:02
706
原创 Linux操作系统使用及C高级编程日报Day12+13(结构体嵌套 / 结构体大小与对齐 / 位域)
结构体嵌套结构体用于表达“整体—部件”关系,使数据结构更具层次性。结构体大小的计算由对齐规则决定,并非简单成员相加;padding(填充字节)直接决定结构体最终大小。位域允许按 bit 组织数据,能够精确描述硬件寄存器和协议字段,但可移植性有限。优化结构体布局的核心技巧:按对齐要求从大到小排列成员,减少 padding。今日内容主要围绕结构体的底层存储模型展开,重点包括:嵌套结构体的数据组织方式结构体大小由对齐与 padding 决定的机制。
2025-12-08 09:06:40
773
原创 Linux操作系统使用及C高级编程日报Day10+11(结构体与结构体指针)
int age;访问结构体成员需使用结构体名不会退化,不同于数组名。对结构体进行赋值是允许的(浅拷贝),但结构体之间必须类型相同。本篇内容完整梳理了结构体与结构体指针两大核心知识点。结构体用于描述复杂对象,而结构体指针用于高效传递、内存访问及构建链式结构。通过示例代码、指针运算与典型错误分析,可以更系统地理解结构体在 C 语言中的应用方式。结构体与指针的结合,是后续链表、文件操作、系统级数据结构的核心基础。牢固掌握本篇内容,将为进一步学习复杂工程结构奠定扎实基础。
2025-12-04 11:44:09
900
原创 Linux操作系统使用及C高级编程日报Day8+9(TFTP 与 NFS)
使用 UDP 69 端口适用于 U-Boot 阶段加载内核与 dtb提供轻量级文件传输能力不提供权限控制与目录遍历常用于嵌入式系统启动前镜像下载网络文件系统,提供透明访问适合作为 rootfs 来源通过设置共享目录依赖 RPC 进行端口动态注册支持权限与同步参数配置TFTP 下载镜像;NFS 提供 rootfsTFTP 基于 UDP;NFS 通过 RPC 多端口两者适用阶段不同功能互补构成网络启动流程NFS 支持权限与目录访问,TFTP 不支持。
2025-12-02 17:48:55
592
原创 Linux操作系统使用及C高级编程日报Day9(Shell 函数与变量作用域学习日报)
或,关键要素是“函数名 + () + 花括号包裹的函数体”。Shell 中return只返回退出状态码(0–255),数据内容通常通过echo输出,再用$(command)捕获。退出状态码通过获取,始终指向上一条命令,调用函数后需要立即保存。函数内部的是函数自己的参数,与脚本启动参数分离;如果需要在函数中使用脚本的$1,必须在调用时显式传入。Shell 变量默认是全局变量,函数内部未使用local声明的变量会影响全局;local可以将变量限制在函数内部。
2025-12-02 12:01:53
912
原创 Linux操作系统使用及C高级编程日报Day7(Shell 脚本中循环与条件语句的应用)
今天,我们学习了 Shell 脚本中的循环语句(forwhile)和条件语句(ifcase通过几个简单的示例,掌握了如何控制程序的执行流程,并修复了几个常见的语法错误。
2025-12-01 22:23:40
224
原创 Linux操作系统使用及C高级编程日报Day6(变量、引号、位置参数与流程控制)
本章核心内容包括:变量定义规则(COUNT=1 不能加空格)、变量取值方式、只读变量覆盖限制,引号规则(单/双/命令替换)、位置参数($#、$@、$*),流程控制语句(判断与循环)等。学习目标是:
2025-11-28 21:52:42
631
原创 Linux操作系统使用及C高级编程日报Day5(进程管理与用户管理)
进程管理与用户管理。目标是建立对 Linux 内部执行流、安全机制和用户体系的基础理解。主要内容包括:程序与进程的本质差异如何查看、监控和终止进程Linux 的信号机制Linux 用户身份体系(UID/GID/HOME/Shell)passwd 和 group 文件的结构用户的创建、修改与删除流程这些知识构成系统层面的操作基础,是嵌入式 Linux 开发和服务器运维的前置能力。本章系统梳理了 Linux 的进程管理与用户管理机制。
2025-11-28 11:05:05
1047
原创 Linux操作系统使用及C高级编程日报Day4 · 文件查找、文本处理与压缩解压全流程(find / grep / cut / sed / awk / tar)
本文完整整理了 Linux 文件管理与文本处理工具链,包括:文件查找:find、grep、which、whereis文本处理:cut、sed、awk压缩归档:gzip、bzip2、zip、tar这些工具构成 Linux 工程中的基础操作体系,从定位文件、过滤内容到日志分析、自动化脚本、数据提取都离不开它们。掌握这一套工具链可以大幅提升在 Linux 环境中的效率与操作能力。
2025-11-27 21:46:53
876
原创 Linux操作系统使用及C高级编程日报Day3(Linux Shell 与基础命令实践学习)
Shell 的角色:明确 Shell 是用户与内核之间的命令解释层,同时也是一门可以编写脚本的语言。用户与权限模型:建立“用户 + 组 + 其他人”的权限视角,理解 root 与普通用户的区别,掌握supasswd和chmod的基本使用。基础命令集:熟悉在终端下进行目录导航、文件管理、时间查询、磁盘空间查看的常用命令,为后续开发操作提供手上的“基本工具箱”。输入输出与重定向:从标准输入/输出/错误三通道出发,掌握重定向、通配符、管道、历史命令、命令替换等机制,能够把简单命令组合成有用的数据处理流程。
2025-11-25 14:23:59
804
原创 Linux操作系统使用及C高级编程日报Day2(Linux 软件包管理)
本章系统梳理了 Ubuntu 的软件包管理体系,包括:软件包打包内容与设计意图二进制包与源码包的区别APT 的在线安装与依赖计算机制dpkg 的离线安装流程与限制软件源在系统软件生态中的位置APT 与 dpkg 的协作模式在线与离线安装常用命令安装过程中常见错误与解决方式掌握软件包管理体系后,可以在各种环境下稳定完成软件安装、升级、卸载与依赖处理,这对于 Linux 系统管理与嵌入式开发都具有重要基础意义。
2025-11-22 11:19:25
1494
原创 Linux操作系统使用及C高级编程日报Day1(Linux 介绍与环境配置)
本章的重点是为后续所有 Linux 与 C 编程学习建立一个稳定可靠的运行环境。内容覆盖从操作系统基础概念,到虚拟机安装、工具配置、编辑器使用和网络连通。完成本章后,一个可用、可开发、可扩展的 Linux 基础环境已经成功搭建。
2025-11-21 20:50:00
537
原创 C语言学习日报:字符串处理函数(D16)
C 字符串 = 字符数组 +'\0'终止符字符串长度以遇到第一个'\0'为止数组长度 ≠ 字符串长度返回不包含'\0'的字符数非常容易被“数组长度”误导覆盖式拷贝,连'\0'一起复制dest 必须足够大从 dest 末尾'\0'开始追加覆盖旧的'\0'最后自动补上一个新的'\0'返回 0:相等小于 0:s1 < s2大于 0:s1 > s2ASCII 从左向右比较isalpha:是否字母isupper:是否大写tolower:转小写toupper:转大写拷贝前 n 个字符源串若 ≥ n →。
2025-11-20 22:34:25
1008
原创 C 语言学习项目:变量存储类型(auto、register、static、extern)(D15)
register 是让变量“尽可能”放进 CPU 寄存器编译器可以选择忽略(不保证成功)register 变量不能取地址(禁止 & 操作)若寄存器不足,会自动退回成为普通 auto 变量static 用法作用域生命周期说明局部 static局部整个程序值在函数调用之间保持全局 static当前文件整个程序限制变量只在该文件可用static 函数当前文件整个程序函数仅在本文件可见// 仅初始化一次cnt++;counter();// 2。
2025-11-19 19:38:13
510
原创 C语言——指针数组、数组指针、函数指针、指针函数
类型 *数组名[大小];int *p[3];p是一个长度为 3 的数组,每个元素都是int*类型。类型 (*指针名)[数组大小];p指向一个含 3 个int的数组。返回类型 (*指针名)(形参列表);含义:指向“接收两个 int,返回 int”的函数。// 和函数一样调用四、指针函数(Function Returning Pointer)类型 *函数名(形参列表);x : y;五、四者对比总结名称含义定义关键点示例指针数组数组里存指针[]优先级高int *p[10]数组指针指针指向数组。
2025-11-18 22:30:06
496
原创 C 语言学习日报:预处理指令、宏、typedef 与宏函数(D14)
define在预处理阶段执行,是纯文本替换不做类型检查、不占内存不会自动加括号 → 所有宏坑都来自括号宏无法调试,也无法设置断点无值宏常用于开关功能:判断宏是否存在:删除宏:#undef""先查当前目录<>查系统路径typedef:给类型起新名字不是创建新类型适用于:基本类型指针类型结构体类型数组指针函数指针(最常用)
2025-11-18 22:01:43
760
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅