C语言
文章平均质量分 80
基础及一些数据结构和算法
加油=^_^=
这个作者很懒,什么都没留下…
展开
-
内存函数(memcpy和memmove函数超详解)
C语言规定:memcpy 拷贝的就是不重叠的内存,memmove 拷贝的就是重叠的内存。继续分析以上代码,因为strcpy函数遇到'/0'就停止,有因为是小端存储,从低地址开始访问,arr1中首个元素是1,内存中就是01 00 00 00,所以只会把第1个元素拷贝进去。函数返回的地址是目的地首元素地址,第一个参数类型是目的地数组地址,第2个参数类型是源头(拷贝的内容)数组首元素地址,第3个参数是源头数组的大小(单位是字节)。我们使用memcpy内存函数,把arr1的内存拷贝到arr2的内存中。原创 2023-12-04 18:09:55 · 903 阅读 · 5 评论 -
逃离火灾(广度优先遍历)
这个我就不做过多的解释了,也很容易理解,剩下的三分之一就是里面的check函数了,我们给一个停留时间,看看能不能到达安全屋。当然,为了方便记录火种,我们再创建一个二维数组q[m * n][2] 来记录火的坐标(m是行,n是列)。因为每次要蔓延火种,肯定是最小的时间,所以这个bfs算法就妙在不需要比较就可以把最小时间算出来,是因为它每次都是先遍历相同的着火时间,之后蔓延,这就很巧妙。因为要蔓延,而且有可能失败,所以我们先定义一个cx来记录当前遍历火的横坐标,cy来记录当前遍历火的纵坐标。之后向四个方位蔓延。原创 2023-11-18 19:55:16 · 149 阅读 · 1 评论 -
单调栈(每日温度)
我们可以发现这些元素想入栈,必须满足一定条件,而且栈中的元素无论是下标还是下标对应的元素都是单调的,这就是单调栈的性质。单调栈是单调递增的还是单调递减的是要看题目的描述。我们定义一个和原始数组相同大小的数组,来记录每个元素下一个高于此元素的相隔位置,单调栈和好解决这种类似问题,就是寻找下一个更大值或者下一个更小值。单调栈也是栈,但是顾名思义,就是很单调的栈。不卖关子,就是单调递增的栈或者单调递减的栈。单调栈还有很多应用场景,之后我会再写一篇子数组中最小值之和,也是利用单调栈。希望不足之处各位在评论区指出。原创 2023-11-28 20:31:58 · 447 阅读 · 10 评论 -
大端和小端存储模式
比如一个整形,里面存储的数据是16进制的数字(int a = 0x11 22 33 44:int 占4个字节,两个16进制位刚好占一个字节,此时a的内存占据如下图所示)。由于指针是连续访问内存的,就是从低地址逐个向高地址访问的,所以我们可以利用指针查看当前计算机是以何种方式存储数据的,就是判断大端还是小端存储。内存是以二进制存储的,1个字节是8个比特,内存为了方便表示,就用了16进制来表示,2个16进制位表示8个比特,也就是一个字节。2.小端(储存)模式,是指数据的低位保存在内存的低地址中;原创 2023-12-04 16:44:24 · 410 阅读 · 0 评论 -
指针(基础篇)
指针?什么是指针?相信很多入坑C语言的同学,指针如同噩梦一般(最开始我也一样)。但是很多难以理解的东西,我们要迎难而上,可能刚开始不懂,但是后来就会慢慢顿悟。指针是指向内存空间的。我们下来做一个比方:中医每次为病人开药,药都在一个存物柜放着,储物柜有很多格子,每个格子都存放着不同的药材。中医每次开药,都要去对应的格子找到对应的药材,那么中医如何找到对应的药材呢?肯定是每个格子上都有对应的药材名字,医生找到名称即可。当对应的药材柜用空了,或者想换药材了,就可以找到对应的名字去改变柜子中的药材即可。原创 2023-12-04 22:33:34 · 888 阅读 · 1 评论 -
操作符(原码反码补码)
这一篇,就够了原创 2023-12-06 16:21:04 · 1064 阅读 · 5 评论 -
字典树(前缀树)
图文并茂,包你理解原创 2023-11-26 21:00:21 · 585 阅读 · 4 评论 -
字符串函数(超详细)
这一篇绝对能使你对字符串函数的理解醍醐灌顶!原创 2023-12-04 00:15:04 · 1851 阅读 · 6 评论 -
线段树(未进阶版)
C语言版的,内附图片说明原创 2023-11-20 14:20:31 · 158 阅读 · 3 评论 -
进制的转换
同理,16进制就是0~15,但是,一个16进制位只能用一位来表示,所以将10用A来表示。还有一种算法:第一位乘2之后加上第二位,之后再乘2,之后加上第三位,再之后乘2,直到加上最后一位便不再乘2。而一个字节正好是8个比特位,我们能用两个16进制位表示,因为内存地址为了方便表示就用16进制位来表示的。因为8进制每一位是0~7,各自写成2进制,最多有3个2进制位。我们要学好编程语言,就一定要知道进制的转换,16进制也是必须知道的。所以二进制转8进制从右往左每3个2进制位换算成一个8进制位。原创 2023-12-04 23:10:01 · 367 阅读 · 3 评论