![](https://i-blog.csdnimg.cn/direct/77f86f0bef524193b755c8f04124da38.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C语言学习
文章平均质量分 59
记录C语言的学习
Dilute816
这个作者很懒,什么都没留下…
展开
-
指针(初阶)
指针变量,用来存放地址的变量。(存放在指针中的值都被当成地址处理)。那这里的问题是:一个小的单元到底是多大?(1个字节)如何编址?经过仔细的计算和权衡我们发现一个字节给一个对应的地址是比较合适的。对于32位的机器,假设有32根地址线,那么假设每根地址线在寻址的时候产生高电平(高电压)和低电平(低电压)就是(1或者0);那么32根地址线产生的地址就会是:这里就有2的32次方个地址。原创 2024-07-16 11:24:41 · 746 阅读 · 0 评论 -
C的程序环境和预处理
这些预定义符号都是语言内置的。举个栗子:FILELINE语法:1000register//为 register这个关键字,创建一个简短的名字for;;# define MAX 1000 # define reg register //为 register这个关键字,创建一个简短的名字 # define do_forever for(;;) //用更形象的符号来替换一种实现 # define CASE break;case //在写case语句的时候自动把 break写上。原创 2024-07-19 22:10:24 · 622 阅读 · 0 评论 -
C文件操作
磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。根据文件指针的位置和偏移量来定位文件指针。原创 2024-07-15 14:58:01 · 942 阅读 · 0 评论 -
指针(进阶)
可见数组名和&数组名打印的地址是一样的。难道两个是一样的吗?原创 2024-07-16 12:06:08 · 910 阅读 · 0 评论 -
实现双向链表的增删查改
这里插入一个新数据时,我们改变指针的指向就能实现尾插了,并注意这里的newnode与phead的指针指向的顺序不能改变,否则phead的next会被修改,导致找不到phead的next指针。注意这里Find函数while循环中的条件,即从pcur也就是phead的笑一个结点开始扫描,由于循环的原因,当扫到带头结点即结束扫描,从而访问到了整个链表.在这一块我们设置一个查询节点的函数,类型为LTNode*,返回一个结点,即->data==3的那个结点,并返回。原创 2024-04-14 15:03:55 · 875 阅读 · 1 评论 -
qsort函数模拟冒泡函数实现
【代码】qsort函数模拟冒泡函数实现。原创 2024-04-19 13:29:13 · 82 阅读 · 0 评论 -
qsort排序
qsort的格式是数组元素的首地址,数组元素个数,数组成员的字节大小,以及比较的函数,这里传函数就是用到了函数指针。什么是函数指针,我在我写的文章中有提及过。原创 2024-04-18 20:48:32 · 358 阅读 · 0 评论 -
实现链表的增删查改
在链表的实现中,也要注意指针释放时,能否还能找到被释放的指针指向的下一个元素,因此我们通常还得设置一个prev指针,假如pos为想要删去的位置,我们要在pre->next!将prev->next = pos->next,防止pos释放后找不到pos的下一个节点。最后,完成一个链表的实现最重要的就是画图,多画图就知道如何实现一个链表的增删查改的一个思路了。这里链表在涉及到头指针的删除与改变时,我们要传二级指针,因为我们要传头指针的地址,才能改变头指针的值。我们再来看一张图,明白指针,二级指针表明的是什么。原创 2024-04-10 10:41:59 · 1252 阅读 · 1 评论 -
结构体以及对齐数
首先假设我们画出S的存储位置,就画一竖行的一些格子,从S开始偏移量为0的位置开始计算,我们先存储变量i的字节,占四个字节,我们将其画入其中。那么b是不是直接连着变量c存储的呢,当然不是,还有一个准则,就是要把字节数最大变量对准该变量内存大小倍数的网格;我们这创建了一个s1变量,并初始化我们在结构体中创建的变量,并一一对应,name对应李华,age对应18。3.最后的内存数是变量中最大对齐数的倍数,可能会导致内存浪费。根据准则,最后的对齐数就为4*2=8,8-5=3,所以浪费了3个字节的空间。原创 2024-03-20 23:39:01 · 248 阅读 · 0 评论 -
strcat追加字符串以及其模拟实现
如此处代码将arr2追加到arr1中的字符串后面。这样就要用两次循环达到字符串的效果,第一次循环是要找到arr1当中' \0' 的位置,第二次循环就将src的字符串加入到dest斜杠0后的位置,直到*src==0,结束字符串的追加。原创 2024-04-06 23:35:29 · 241 阅读 · 1 评论 -
strcpy的模拟实现
strcmp(arr1,arr2)是将arr2的内容拷贝到arr1当中。接下来我们来看看如何模拟实现:我们首先得创建一个函数,传入arr1与arr2当前的内容。再通过指针*arr2++=*arr1++,一个字节一个字节的传入,直到*arr2=0时结束循环,最终实现了strcpy的模拟实现。//是将arr2复制到arr1中。当arr1=0时自动结束循环,又同时完成了拷贝。char arr1[] = "元神启动!char arr2[] = "元神关闭!//拷贝\0前面的内容。原创 2024-04-06 17:47:26 · 323 阅读 · 1 评论 -
strstr查找字符串的模拟实现
设置一个cur指针接受str1,以防str1位置不是初始值,从而返回值失败。再设置s1与s2指针分别指向cur与str2。while(*cur)防止cur往下查找时查找到了\0后停止,也说明了查找失败。=0)当cur++开始等于s2s时,while (*s1 == *s2&&*s1!=0),查找直到没有相同字符位置,if (*s2 == 0),若s2不为0,则查找失败,若为0查找成功。//找到时,由于函数类型是char*,返回指针起始位置。原创 2024-04-07 12:13:55 · 197 阅读 · 0 评论