
C语言
文章平均质量分 80
C语言专栏。仅为C语言相关知识,具体分类可看二级分类目录。
Real返璞归真
抛开喧嚣,只为一纸清凉。
微信公众号【Real返璞归真】有问必答。
热爱算法、安全(Pwn和逆向)、全栈开发。
展开
-
算法笔记(一):位运算
0x3F0x3F3F3F3F在算法中是很有用的数值,他是满足以下两个条件的最大值:整数的两倍不超过0x7FFFFFFF,即int能表示的最大的整数。整数的每8位(每个字节)都是相同的。程序中经常使用memset(a, val, sizeof(a))初始化int数组,该语句把数值a(0x00~0xFF)填充到a的每个字节上。然而,1个int占用4个字,所以memset只能赋值出**“每8位相同”**的int。综上所述,0x7F7F7F7F是能用memset初始化出的最大的int。不过,为了避原创 2021-05-27 15:34:38 · 276 阅读 · 0 评论 -
C语言函数调用底层实现原理
前言C语言程序执行实质上的函数的连续调用。运行程序时,系统通过程序入口调用main函数,在main函数中又不断调用其它函数。程序的每个进程都包括一个调用栈结构(Call Stack)。调用栈的作用:传递函数参数保存返回地址临时保存寄存器原有值(保存现场)寄存器分配寄存器指CPU中可以进行高速运算的缓冲区。用于存放程序执行中用到的数据和指令。Intel 32位结构寄存器(IA32)包含8个通用寄存器,每个寄存器4个字节(32位)。通用寄存器按照AT&T语法,寄存器名以**%e原创 2021-05-26 10:58:51 · 2669 阅读 · 1 评论