- 博客(11)
- 收藏
- 关注
原创 静态联编和动态联编
静态联编:【早绑定】,编译期就确定调用哪个函数动态联编:【晚绑定】,运行时才确定调用哪个函数联编 = 把 “函数调用” 和 “函数体实现” 绑定在一起。
2026-05-21 16:52:55
31
原创 【C语言】指针
计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用 4 个字节,char 占用 1 个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。我们将内存中字节的编号称为地址(Address)或指针(Pointer)。地址从 0 开始依次增加,对于 32 位环境,程序能够使用的内存为 4GB,对于 64 位环境,程序能够使用的内存为 8 GB。
2025-10-28 00:02:20
708
原创 【C语言】位运算
将一个数的特定位清零,其他位不变。例如:将一个数X低4位设为1,X | b1111。相当于乘以2的N次方(在不溢出的情况下)X << n = a * 2 ^ n。示例:-7 >> 1(计算机中负数以补码形式存储,位运算对补码操作)将字符'0'转成数值0:'0' &0x0f=0。X&1==1则为奇数,X&1==0则为偶数。例如,取X的最低4位,X&0b1111。有符号数:左边空位符号位填充,正数0负数1。
2025-10-24 15:46:06
877
原创 【C语言】str系列函数
返回值:0 表示str1字符串与sub字符串'\0'前每个字符都相等。返回值:-1 表示str1字符串小于sub字符串。返回值:1 表示str1字符串大于sub字符串。string:目标字符串的地址。
2025-10-15 15:23:37
533
原创 【Linux】信号的使用
通知进程产生某个事件。<signal.h>信号是系统响应某个条件而产生的事件,进程接收到信号会执行相应的操作。子进程结束后,默认给父进程发送此信号。
2025-09-27 22:12:47
484
原创 【Linux】Mybash的实现
通过 fork() 和 execvp(),mybash 实现了命令的执行流程,使得 shell 在执行每个命令时能够创建新的进程来运行命令,而不会干扰 shell 本身的运行。Mybash实现:主函数内while循环:子进程中进程替换实现Linux命令 + 终端提示符print_info() + 输入命令分割字符串getcmd()//printf("mycmd[%d] = %s\n",i,mycmd[i]);if(uid == '0') // vi /etc/passed查看 uid。
2025-09-22 23:39:02
955
原创 【Linux】操作文件的系统调用,进程替换
进程替换是操作系统内存管理中的一种重要机制,它通过将不活跃的进程从内存中移除并存储到磁盘中,能够在物理内存不足时有效地管理内存资源。由于 fork 创建的子进程的 PCB 是拷贝父进程的,子进程的 PCB 中的文件表指向打开文件的指针只是拷贝了父进程 PCB 中的值,所以父子进程会共享父进程 fork 之前打开的所有文件描述符。每当一个进程打开一个文件或创建一个输入输出流,操作系统会为他分配一个文件描述符。(替换前后进程ID保持一致,exec用于执行新程序,替换当前进程代码,原程序后续代码不再执行)
2025-09-20 23:52:41
716
原创 【Linux】shell脚本
pattern: 匹配文本模式(正则表达式,数字或其他条件)。action: 当前模式匹配成功时执行的动作(打印,修改等)。file: 要处理的文件。函数中定义的变量,在函数结束后,仍然可以调用,因为变量是在解释器中定义的。sed是一个非交互性文本流编辑器,它编辑文件或标准输入到处的文本拷贝。——shell中的变量的定义和值在解释器中,没有类型。脚本是一个文本文件,需要解释器(bash)1.在命令行中awk。$1, $2, ... 脚本程序的参数。$$:shell脚本的进程号。$PS1,$PS2:提示符。
2025-09-18 14:51:34
1362
原创 【C语言】函数封装 左移右移
左移 << :高位 & 0x8000 0000(1000 0000)不需要返回值时 设计返回值类型 void ---> 无类型。右移 >>:val &1(0000 0001)(对2取余)3.返回值类型 —>设计任意类型(除数组类型)数值:val >> n val除2的n次方。数值:val << n val乘2的n次方。有符号,空位填符号位。C 面向过程——功能 封装———函数。返回值 函数名(形式参数列表);函数名(实际参数列表);返回值 函数名(形式参数列表)规则:无符号,空位填0;
2025-09-17 13:29:25
509
原创 【Linux】逻辑地址与物理地址 页表
1.它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,根据需要在磁盘和主存之间来回传送数据,使得能够运行比内存大得多的进程。页表(Page Table):操作系统维护的一张表,存储逻辑页与物理页之间的映射关系,操作系统通过页表可以将程序的虚拟地址转化为物理地址。在Linux系统中,复制进程的时候,一般采用写时拷贝,(延迟拷贝操作,仅在必要时执行)。物理页(Physical Page):实际内存中的页,通常为4KB,和逻辑页大小相同。页表 = 页表项大小 * 页的数量;
2025-09-15 23:42:21
720
原创 【C语言】数据类型
表示有符号的整数,默认可以存储正数和负数,内存的首位是符号位。表示较大的有符号整数,通常占 4 字节或 8 字节,具体取决于平台。表示宽字符类型,通常用于处理多字节字符集,如 Unicode 字符。表示扩展精度的浮点数,通常占 8 字节或 12 字节,取决于平台。表示双精度浮点数,通常占 8 字节,精度高于 float。表示无类型,通常用于函数返回类型,表示该函数不返回任何值。表示单精度浮点数,通常占 4 字节,存储浮动的小数。表示更大的有符号整数,通常占 8 字节。表示较小的有符号整数。
2025-09-12 17:01:56
920
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅