![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言进阶
文章平均质量分 87
凌云志.
君子慎独,不欺暗室
展开
-
【C语言进阶】程序环境和预处理
C语言预置了一部分符号,我们可以直接使用__FILE__//进行编译的源文件__LINE__//文件当前的行号__DATE__//文件被编译的日期__TIME__//文件被编译的时间__STDC__//如果编译器遵循ANSIC,其值为1,否则未定义//语法#defineregregister//为register这个关键字,创建一个简短的名字;)//用更形象的符号来替换一种实现case//在写case语句的时候自动把break写上。建议不要在#define后面加"......原创 2022-07-28 20:42:04 · 276 阅读 · 0 评论 -
【C语言进阶】文件操作
我们在使用计算机的过程中,有些数据在我们关闭计算机以后还会被保存,当我们再次打开计算机时,数据还会存在,这就是被保存在硬盘上的数据。那么实现数据的持久化,就需要文件。什么是文件?磁盘上的文件是文件,但是在程序设计中,我们所说的文件分为两种程序文件、数据文件(从文件功能的角度来分类的)。程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。数据文件。......原创 2022-07-27 23:45:13 · 188 阅读 · 1 评论 -
【C语言进阶】动态内存管理
void*malloc(size_tsize);malloc向内存申请一块连续可用的空间,并返回这块空间的指针。如果开辟成功,返回指向这块空间的指针如果开辟失败,返回NULL,因此使用malloc以后要做好检查返回值的类型是void*,使用前要强转如果参数size传的是0,这是C语言标准未定义的行为,由编译器决定。......原创 2022-07-26 17:18:43 · 149 阅读 · 0 评论 -
库函数strstr的两种算法模拟实现(BF算法和kmp算法)
BruteForce(暴力)算法,我们的目的是查找两个字符串中一个字符串是否是另一个字符串的真子集,为了便于区分,我们把前者称为str2,后者称为str1,那么我们的目的就是就是在str1中找到字符串str2。例1假设str1[10]="abcdef";最开始的时候,str1和str2都指向字符串的首元素,对于这个例子,我们很容易想到一种方法,就是直接比较str1和str2指向的元素,当2时,str1++,str2不变,直到。...原创 2022-07-25 21:45:53 · 581 阅读 · 0 评论 -
字符串函数和内存函数模拟实现
memcmp函数的作用是逐字节的比较,那么实现原理与strcmp函数的原理应该是相似的,只是传入的类型值不同,memcmp使用了泛型指针,用于适应不同的数据类型。除了上述两种方法外,我们之前学过,指针是可以进行加减运算的,指针-指针表示的就是两个指针之间的元素个数,因此我们可以使用字符串的'\0'处指针减去起始位置指针。strcmp实现的原理是同时比较两个字符串中的第n个字符,如果相同,就比较下一对,直到遇到不同的或者是'\0',停止比较,返回两个字符的差值。第一种情况是源的地址在目标地址的右边。...原创 2022-07-18 11:40:01 · 72 阅读 · 0 评论 -
字符串函数和内存函数介绍
strDest表示拷贝的目标空间起始地址,strSource表示拷贝的源的起始地址,count表示需要拷贝的字符个数。strDest表示追加的目标空间起始地址,strSource表示追加的源的起始地址,count表示需要追加的字符个数。dest表示目标空间的起始地址,src表示拷贝的源,count表示需要拷贝的字节数。dest表示目标空间的起始地址,src表示拷贝的源,count表示需要拷贝的字节数。strDestination表示拷贝的目标空间,strSource表示拷贝的源。......原创 2022-07-17 12:05:45 · 283 阅读 · 2 评论 -
转移表实例----袖珍版计算器
按照之前写过的扫雷和三子棋的框架,我们首先写一个框架 加减乘除的函数实现在此就不过多赘述。观察上面的代码我们可以看出用switch语句会造成代码冗余很多,而且后期如果要加入新的功能,就只能在case语句后面再加入,使代码量巨大,形成“屎山”,对后期维护极度不友好。所以我们可以对代码框架进行更改。观察上面的函数可以发现,加减乘除函数的返回值、参数都是相同的,那么如果用函数指针表示,然后把函数指针存在一个数组中,通过输入的值(input)调用,会使整个代码框架优化很多。 更改为转移表的框架以后,整原创 2022-07-10 22:21:21 · 302 阅读 · 1 评论 -
【C语言进阶】深入理解指针
目录字符指针指针数组数组指针数组传参、指针传参函数指针函数指针数组指向函数指针数组的指针回调函数指向字符的指针称为字符指针,用char*表示。一般使用如下表示方法这里的pc就是一个指向ch的字符指针,还有另一种表示方法:注意:这里的pstr的类型是const char*, 字符指针是不能指向字符串的,这里的pstr指向的是常量字符串hello world!的第一个字符h。 由于p1,p2指向的是常量字符串abcdef的首字符地址,因此p1,p2的内存放的地址是相同的,所以第一个输出p原创 2022-07-10 00:31:58 · 294 阅读 · 1 评论 -
数据在内存中的存储
数据在内存中存储的方式原创 2022-06-29 17:09:54 · 163 阅读 · 1 评论