自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 鹏哥C语言复习——内存函数

上述代码最终打印结果为16843009,这是因为memset函数是以字节为单位进行存放,在1个字节当中,10进制的1的16进制表示为:01,如下图所示。一个字节一个字节以01的16进制方式存入内存,而一个整型占四个字节,所以最后输出的结果为16进制下的01 01 01 01,因此才会输出非常大的一个结果。如果是以整型变量的数据大小(4字节)来拷贝,那如果我们传入的num大小为7就无法完成拷贝工作,因此需要以1个字节大小来进行拷贝。该函数是针对内存块进行拷贝操作,mem即为memory,是内存的意思;

2024-05-01 23:58:28 161

原创 鹏哥C语言复习——字符函数与字符串函数

对于最简单的那种情况,将两个指针传给函数以后,字符串1中先是a,不是满足条件的子串字符,向后移动一位是b,满足条件,此时字符串1和字符串2同时向后移动一位;还是以上述假设为例,会先将arr1中的'a'放入arr2的首地址处,然后再将arr1中的'b'放入arr2的第二个空间,以此类推,直到将arr1中的'\0'存入arr2数组。这时我们不禁又有一个疑问,那就是如果str2在传入时就为空怎么办,对于该库函数,是直接返回str1本身,因此还需要一句如下代码,函数功能才是完整的。

2024-04-27 23:58:23 1483

原创 顺序表leetcode刷题(C语言版)

对于本题,共有两种解法:思路一:创建新的数组,遍历原数组,将不为value的值放到新数组中,但本题不允许使用新的数组,因此该方法不行思路二:使用快慢指针,原数组基础上进行修改,源数据、目标数据,分别用src和dst两个指针指向;src指向的值为value,则往后走,即++;若src指向的值不是value,则nums[dst]=nums[src],dst++,src++上图是初始化情况,创建两个变量,让他们指向数组的首地址;

2024-04-21 12:00:57 838 1

原创 顺序表复习(C语言版)

而指针变量形式的形参才是真正改变地址中的数据的;答案是不能,因为size作为数组下标没有任何指向的元素,pos等于size相当于数组越界访问,应该用assert断点杜绝这样的事情发生。假如我要在pos=2的位置插入,那么就需要先把原有数据从后往前向后移动一位,最后在空出来的开头位置放入所需存放的元素。顺序表说:虽然我底层逻辑是数组,但是我提供了很多现成的方法,开箱即用,我就变成了一个新的很厉害的数据结构。顺序表是线性表的一种(线性表为具有相同特性的数据结构的组合),同时线性表可以存放任何类型的数据。

2024-04-20 19:10:05 1042

原创 二工大C语言版数据结构《实验报告2》:单链表

目录1.单链表的建立与打印2.单链表的查找3.单链表的插入4.单链表的删除5.循环单链表的修改与表示6.全部代码具体题目如下: 需要完成的代码如下:2.单链表的查找3.单链表的插入4.单链表的删除5.循环单链表的修改与表示全部代码是由我和我室友共同思考得出,快和我一起大声说:“谢谢室友!”

2024-04-15 01:27:10 182 1

原创 鹏哥C语言复习——数据存储

先从00000000开始,每+1,加到最大值,即127,即01111111,再+1,会变成10000000,上文已经说过,这个结果为-128,因此继续+1,即10000001,这是补码,换成原码结果为11111111,即-127,以此类推,最后一个数据为11111111(补码),即10000001(原码),即是-1。但是对于 9.6 这样的数据,2^(-1)为0.5,2^(-2)为0.25,2^(-3)为0.125,以此类推,最后就需要开辟非常非常多的0来满足0.1的需要。

2024-04-13 15:50:53 939 1

原创 鹏哥C语言复习——结构体

上述代码当中,整型变量应该为4字节,即32比特;而_a: 2就是将a这个变量变成2比特有时候,我们不需要某个变量占用很大空间(例如某个变量只会是0或1),但是直接开辟必定会占用32比特,这种情况下我们就需要使用位段而上述代码中是以整型大小为标准来开辟空间的 因此先开辟了32比特,然后存放了 2+5+10=17 以后,再存放30超过了32比特;因此又开辟了32比特的内存空间,存放30比特的数据在上述代码中,先是开辟了8比特,存放7比特内容;然后又开辟了8比特,存放5比特内容;

2024-04-07 15:10:14 843 1

原创 鹏哥C语言复习——指针

概念:野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)野指针的可能成因:1.指针没有初始化原因:*p没有初始化,就意味着没有明确的方向;一个局部变量不初始化的话,放的是随机值:0xccccccc,即非法访问内存,这种被称为野指针2.指针越界访问int main()//&arr[0]int i = 0;for (i = 0;i

2024-03-30 23:59:39 346

原创 鹏哥C语言复习——动态内存开辟

动态内存函数共有4概念介绍:结构体中的最后一个元素允许是未知大小的数组,这就叫做【柔性数组】成员柔性数组的初始化方式:a[ ] 或者 a[0](具体用哪个看编译器)1.结构体中的柔性数组成员前必须至少一个其他成员2.sizeof返回的这种结构体大小不包括柔性数组的内存3.包含柔性数组成员的结构用malloc()函数进行内存的动态分配,并且分配的内存应该大于结构体的大小,以适应柔性数组的预期大小4.一个结构体里,柔性数组只能出现一个struct Sint n;int arr[];

2024-03-21 23:54:41 926 1

原创 鹏哥C语言复习——青蛙跳台阶(小乐乐跳台阶)

第一种情况:1 余9 fib(9) | 第二种情况:2 余8 fib(8)小乐乐上课需要走台阶,因为他腿比较长,所以每次可以选择走一阶或两阶,那么他一共有多少种走法?n = 2 时,有1阶+1阶和直接2阶两种走法。当 n > 2 时,假设有10个台阶 (n为假设的台阶数)10 fib(10) ---计算走n个台阶的走法。由此可见fib(10) = fib(9) + fib(8)那么第一步走了1阶,还剩9阶;

2024-03-02 11:10:38 383

原创 鹏哥C语言复习——操作符

本文讲到了指针相关、结构体相关的操作符,但笔者由于篇幅原因并未展开(真的又臭又长)

2024-02-29 23:37:44 882 1

原创 鹏哥C语言复习——扫雷游戏

扫雷》是一款大众类的益智小游戏,于1992年发行。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。游戏的基本操作包括左键单击(Left Click)、右键单击(Right Click)、双击(Chording)三种。其中左键用于打开安全的格子,推进游戏进度;右键用于标记地雷,以辅助判断,或为接下来的双击做准备;双击在一个数字周围的地雷标记完时,相当于对数字周围未打开的方块均进行一次左键单击操作。

2024-02-13 23:00:32 882 1

原创 鹏哥C语言复习——三子棋

本文对三子棋游戏所有功能实现进行了详细讲解,敬请阅读

2024-02-12 21:02:43 1208 1

原创 复习leetcodeLCR 187题:破冰游戏(C语言+约瑟夫环)

笔者在解答本题以前,并未学过约瑟夫环递归公式,所以笔者先是用递归的思路思考本题。思路大致如下(为讲解方便,笔者使用了leetcode中“num=7,target=4”的这种情况):递归思想即是大事化小,小事化了;因此,我们可以在每次有人出局以后,都重新再调用一次函数,形成递归注:红底为报数又一次从头开始,因为7个编号是围成一个圈在报数(即按01234560123456……的顺序在报数),所以从头开始的第一个编号不一定为0。递归思想:第一轮报了4个数+3编号出局 + 按“4560124……”继续报数;第二轮报

2024-02-05 23:57:16 1175

原创 鹏哥C语言复习——函数递归

直至n为1,跳出if语句,printf了1这个值,在n为12的这一情况下的if语句执行结束,往后执行printf(12%10),即打印了2,然后又回到了n为123的这种情况,以此类推,最后成功打印1 2 3 4。num为1234,传给了print函数,故n为1234,比9要大,1234/10 = 123,即把123传输给了print函数(//len = 3,str == '\0'时,返回0数值给my_strlen("c")函数,以此类推,形成递归。在传参时,传入的是arr数组首地址,即'a'。

2024-02-04 18:52:14 841 1

原创 复习leetcode第五百零九题:斐波那契数(C语言)

假设n=4,在fib函数中执行return fib(n-1)+fib(n-2)这条语句,即return fib(3)+fib(2);fib(3)即为n=3,在fib函数中执行return fib(2)+fib(1);又因fib(1)+fib(2)=1+1=2,所以fib(3)返回了2给了fib(4),所以fib(3)+fib(2)=2+1=3。第三种情况使用递归或者其他方法都可以,笔者在此使用了递归。3.n为其余情况,递归求f(n)2.n为1或者2,f(n)=1。1.n为0,f(n)=0。

2024-02-04 16:57:46 404 1

原创 复习leetcode第二百三十一题:2的幂(C语言)

假设x=3,当x=3时,执行return 2*mi(x-1)这一语句,开始递归;然后2*mi(0)返回给了mi(1)这一函数,可以看成mi(1) = 2*mi(0) = 2,返回了2给return 2*mi(1),诸如此,不难看出mi(2) = 4,mi(3) = 8;,首先读者需要明白一件事,那就是n

2024-02-04 12:34:02 746 1

原创 鹏哥C语言复习——函数基础和变量概念

并且因为在把xxx.h卖给其他公司时,可以把xxx.c中的内容编译成静态库,此时xxx.c中的代码会是一串乱码,那么别人就无法进行抄袭。相关程度越高,我们称之为高内聚,反之低内聚;由于笔者在大学学习期间,对函数部分的理解较浅,尤其是函数递归部分,所以本文会根据B站鹏哥C语言的视频对函数部分内容有一个大致介绍,并且会将函数递归部分单独写一篇文章。在完成了add.c功能,并在add.h文件中声明了add.c中的所有函数,那么打开add(人为命名)功能项目的属性,并将配置类型改成改为静态库类型,如下所示。

2024-02-03 11:52:30 470 1

原创 复习leetcode第四题:寻找两个正序数组的中位数(C语言)

于此同时,由于此法需要使用循环语句,同时nums1Size与nums2Size是题目给出的自变量,nums3中的元素个数是因变量,因此可能会出现(nums1/nums2)之一的数已经全部赋完了,所以循环退出条件可以是(count1>nums1Size或count2>nums2Size),接下来就把未赋完的那个数组中的各元素存入即可。1.因为nums1[0] > nums2[0],所以nums3[0] = nums1[0] = 1,nums1下次判断用第二个元素,nums3下次赋值用第二个位置。

2024-02-02 13:30:38 1065 1

原创 复习leetcode第一题:两数之和(C语言)

在C语言中,一个数组的长度是不可知的。虽然本题中能明确数组的长度是2,但是在普遍情况下,如果我们需要在函数中给外层返回一个数组,那么就需要想办法让外层知道这个数组里面的元素数量是多少。returnSize是一个int*的指针,是传地址进来的,我们在函数中对returnSize解引用后的修改,可以被外层获取,这样就利用returnSize作为(输出型参数)让调用这个函数的执行流在调用完毕后能得知你返回的数组的大小。但对本题来说,main函数中已经进行了free函数运行,因此在自定义函数中可以省略。

2024-02-01 12:58:44 386 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除