自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 编译、链接初识——C语言

在接触编程语言的过程中,我最开始只是会照着葫芦画瓢,而不去思考底层的一些原理:我们写在编译器里面的代码是怎样一步一步转换成我们所需要的结果的,这其中究竟发生了什么?这就与编译链接等相关了。本次主要是分享我初步接触编译、链接的一些学习历程。

2024-05-05 22:05:00 786 2

原创 C语言文件操作详解(3)(文件读取结束的判定)

再读写文件时,我们除了会使用读写函数,文件打开方式之外判定一个文件读取结束也非常重要。

2024-04-09 13:03:55 536

原创 C语言文件操作详解(包含文件读写操作解析)(2)

这两个函数针对的是格式化输出,说到格式化输出我们一定想到了scanf和printf函数,没错,这两组函数有很多相同点;fscanffprintf使用时首先把数据通过fprintf放到文件中去,之后可以再通过fscanf从文件中拿出来放到程序中来这里的rewind函数是让光标回到初始位置,后续会详细解释;因为fprintf之后光标是再b后面的,这个时候用fscanf无法读到有效信息,我们需要让光标回到a的位置。

2024-04-09 11:24:04 452

原创 C语言文件操作详解(包含文件读写操作解析)(1)

在磁盘(硬盘)上的一些存储数据的存储形式的具象化就是文件。在程序设计中,我们一般的文件有两种:程序文件和数据文件(按照文件功能来分的)

2024-04-07 22:02:34 1005

原创 函数atoi-详解以及模拟

函数说明:atoi函数返回值是整型;参数是一个常量字符串;这个函数作用效果是将一个字符串转换为一个整型,返回的是这个转换之后整型的数值;如果这个被操作的常量字符串开头是空字符,那么这个函数将自动跳过这些空字符只到第一个非空格字符被发现。接着从这个非空格字符开始往这个字符串后面操作,若是这个第一个非零字符是正负号,那么这个正负号将直接决定返回值的那个整型数值的正负;若是这个字符串开头的不是空格或者不是数字字符,那么这个函数将直接返回零;

2024-04-04 13:35:51 253 1

原创 定义一个宏来实现整数的二级制位的奇、偶数位的对换

先要把一个整数的奇数位提取出来就可以将这个整数的二进制位的奇数位全部与上1,偶数位全部与上0(我们想要只保存奇数位,这样不论这个整数的二进制位上面的每一个是1还是0,每个二进制位上奇数位上的数是1那么与上1最后就得到1,是0,那么就得到0;相反无论偶数位上是1还是0,与上0之后最终只能得到0。这就是我们交换完之后的奇数位和偶数位,那么我们还需要将这个新二进制列以一个数的形式呈现出来, 这时候就将这两个新的奇数位和偶数位按位或,最后得到的就是原来的数的二进制位上的奇数位和偶数位交换之后的数。

2024-04-03 21:07:55 295 1

原创 offsetof宏-详解以及模拟

offsetof宏是用来返回结构体或者联合体中成员变量的偏移量的;返回值是一个无符号数,第一个参数的含义是是结构体或是联合体的哪种类型,第二个参数是在这个结构体或者是联合体中某一个成员变量的名称;这个宏返回的就是这个成员变量的偏移量,单位是字节;代码演示:代码结果:经过分析,我们可以发现算出的结果是正确的。

2024-04-03 20:35:57 397 1

原创 C语言结构体相关知识:(包含结构体大小计算详解)

在C语言中有几种自定义的类型,结构体就是其中一种。结构体中包含着一些成员,这些成员都被称为成员变量,成员变量可以是许多不同的类型,比如整型,浮点型,字符类型,都可以。struct Stu声明了结构体的名称,可以用这个名称去创建许多相同类型的结构体变量,下面的s就是;

2024-03-25 21:32:46 693

原创 C语言浮点数存储初步解析

第二种情况:在E全为0的时候:这时候取出就直接取E是(1-127)或者是(1-1023),同时,有效数字M也不再加上第一位的1,而是还原成0.xxxxxx的小数,这样是为了表示正负0,或者很接近于0的小数;最后一个打印就是将我们上面分析的整改之后的存储值以浮点数的方式再取出,S就是0,E是130-127,M是1.001(这里E不全为0,所以是常规情况,M要加上隐形存储的1),取出来就是9.000000。第一个0是符号位,(-1)^0说明是正的,后8位全为0,那么取出来的时候,M不会加上1,也就是。

2024-03-18 21:54:01 831

原创 C语言内存函数

如果dest地址比src大,那么src指向的数组就要从后往前copy,看到上面代码,此时dest>src,如果从前往后(也就是依次把1、2、3、4、5copy到4、5、6、7、8)我们会发现当1、2、3copy完的时候,原本4、5、6变成了1、2、3,这一部分正确,但是本是要被copy的4、5变成了1、2,这时候就7、8的位置就变成了1、2而非4、5,最后得到的结果是:1,2,3,1,2,3,1,2,9,10;而不是1,2,3,1,2,3,4,5,9,10;memcmp参照strcmp理解。

2024-03-15 15:31:27 774 1

原创 C语言strstr函数理解及模拟

cur是方便在对比的时候排除arr1里面的一个就让扫描的初始点指向后面一个这样就可以实现依次查找了,current就是目前的意思,代表目前对比和扫描的起始点(例如上面代码,我们最开始是a和a对应,正确,往后走,a和b不对应,那么就要重新设定扫描的初始点,这时候cur++,就指向arr1里面的第二个a的地址,后面依次如此);='\0',原因是我们是从cur的指向的地址开始查找的,cur如果指向'\0',那么说明arr1里面的都被扫描了,这时候就找不到了,所以cur!='\0'被设置成循环的条件;

2024-03-13 19:28:53 308

原创 C语言指针详解--2

数组形式的就不必多说;关键是数组指针形式的,我们把二维数组看成一维数组的时候,那么二维数组里面的元素类型就是假象的一维数组里面的元素的类型,然而一维数组的类型用指针去接收时,我们把一维数组当成简单元素般的整体,它的类型就是数组指针,就如同用指针接收int型的实参的地址,形参就要用int*,这里接收一维数组的地址就要用数组指针。至于函数指针最前面的类型,表示的是这个函数指针指向的那个函数的返回类型,后面的一些形参是指向函数的形参,形参名称可以省略,类型不能省略,这些都是和指向的那个函数一一对应的;

2024-03-10 12:50:32 793 1

原创 C语言指针详解--1

arr[0]也是首元素的地址,*arr和arr[0]相应地就是第一个元素,那么*(arr+1)和arr[1]就是第二个元素,此时我们定义一个指针变量指向int* p=arr,本质上我们在使用p的时候也可以跳出指针的写法局限,这样写p[0],这和*p是一样的,同样的p[1]和*(p+1)也是一样的,这是和arr一样的模式。首先注意指针的初始化,然后那些我们暂时不使用的指针,可以将其指向NULL,因为规定了指向NULL的指针就不会去使用,那么就不会出现野指针,其次避免返回局部变量的地址;

2024-03-09 19:37:11 720

原创 qsort快速排序函数的模拟构建

看到嵌套的for循环里面的内容:通过另一个函数cmp_str来比较两个元素的大小进而判断要不要交换,重点是我们使用这个函数的时候实参的理解,我们将所有元素首先转换成char*的类型,在这里是为了兼容性(举个反例,假如你是int*类型的,但是你要排序一个结构体,但是这个结构体每个元素的大小都不是int的整数倍,那自然是不能传过去的),但是char*类型就不一样,当你解引用的时候可以乘上一个整数来确保大小和你要排序的元素大小相同,因为char大小是一个字节。要注意的是这里的MyType是你要排序的元素的类型;

2024-03-07 15:31:25 829

原创 C语言实现简化版扫雷游戏

如果排查成功,就要呈现给玩家看这个排查到没有雷的坐标周围有几个雷,在这里,我们使用统计大小的方式来反映,因为周围存放的是字符‘0’或‘1’,我们先将周围八个字符加起来再减去8*‘0’得出的结果就是周围雷的个数(参考ASCLL表),然后再把show棋盘上的相应的坐标赋值这个得到的结果加‘0’,最后呈现给玩家看到的就是一个字数,也就是雷的个数。首先定义主函数,再设计选择进入游戏与否的函数,值得注意的是本段代码中srand的所在行的代码是为后续的工作准备的,再此可以先忽略不看,menu()是自己设计的一个菜单;

2024-01-23 12:37:39 787 1

空空如也

空空如也

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

TA关注的人

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