
C语言
文章平均质量分 83
2021dragon
越努力越幸运
展开
-
C语言毕业啦!!!(内附超详细知识框架图)
经过三个月的学习,我的C语言总算是毕业啦!!!这期间虽然遇到了不少问题,但最后都迎刃而解。从最开始的分支循环语句,到较难的函数和数组,再到更难的指针,还有结构体,联合体,位段,动态内存开辟,文件操作函数,程序的编译和链接等等等等。刚开始学的时候都感觉很难,特别是文件操作函数和程序的编译和链接这两个部分,真的是反复学习了好几遍才弄懂!大部分在学校学习C语言的朋友,都是感觉指针非常难,但是指针和这些更底层一点的学习比较起来,真的是不算什么了。但是只要我们肯花心思去学习,没有什么是学不会的。在学完C语言后,感原创 2021-03-31 15:38:34 · 9648 阅读 · 50 评论 -
贪吃蛇(C语言实现)
文章目录游戏说明游戏效果展示游戏代码游戏代码详解游戏框架构建隐藏光标光标跳转初始化界面初始化蛇颜色设置随机生成食物打印蛇与覆盖蛇移动蛇执行按键判断得分与结束游戏主体逻辑函数从文件读取最高分更新最高分到文件主函数游戏说明游戏效果展示游戏代码游戏代码详解游戏框架构建隐藏光标光标跳转初始化界面初始化蛇颜色设置随机生成食物打印蛇与覆盖蛇移动蛇执行按键判断得分与结束游戏主体逻辑函数从文件读取最高分更新最高分到文件主函数...原创 2021-08-18 12:44:02 · 305938 阅读 · 648 评论 -
俄罗斯方块(C语言实现)
文章目录游戏说明游戏效果展示游戏代码游戏代码详解游戏框架构建隐藏光标光标跳转初始化界面初始化方块信息颜色设置画出方块空格覆盖合法性判断游戏主体逻辑函数判断得分与结束主函数游戏说明俄罗斯方块相信大家都知道,这里就不再介绍什么游戏背景了,我这里对本代码实现的俄罗斯方块作一些说明:按方向键的左右键可实现方块的左右移动。按方向键的下键可实现方块的加速下落。按空格键可实现方块的顺时针旋转。按Esc键可退出游戏。按S键可暂停游戏,暂停游戏后按任意键继续游戏。按R键可重新开始游戏。除此之外,本游戏还原创 2021-08-14 17:23:26 · 187141 阅读 · 329 评论 -
贪吃蛇二代 —— 穿墙版(C语言实现)
文章目录游戏说明游戏效果展示游戏代码游戏代码详解游戏框架构建初始化界面隐藏光标光标跳转颜色设置初始化蛇随机生成食物打印蛇与覆盖蛇移动蛇游戏主体逻辑函数执行按键判断得分与结束从文件读取最高分更新最高分到文件主函数游戏说明游戏效果展示游戏代码游戏代码详解游戏框架构建首先还是先定义一下界面的大小,即界面的行数和列数。#define ROW 23 //界面行数#define COL 42 //界面列数此外,我们还需要两个结构体,分别用于存储蛇头的信息和蛇身的信息。蛇头结构体当中存储蛇头当前所在原创 2021-08-21 10:07:34 · 13914 阅读 · 208 评论 -
八大排序算法(C语言实现)
文章目录插入排序插入排序希尔排序选择排序选择排序堆排序交换排序冒泡排序快速排序并归排序并归排序插入排序插入排序希尔排序选择排序选择排序堆排序交换排序冒泡排序快速排序并归排序并归排序...原创 2021-05-16 10:46:37 · 87856 阅读 · 229 评论 -
哈夫曼树(C语言实现)
文章目录哈夫曼树的基本概念哈夫曼树的构建构建思路代码实现哈夫曼编码的生成编码生成思路代码实现完整代码展示以及代码测试哈夫曼树的基本概念在认识哈夫曼树之前,你必须知道以下几个基本术语:1、什么是路径? 给定N个权值作为N个结点,构造一棵二叉树,若该树的带权路径长度达到最小,则称该二叉树为哈夫曼树,也被称为最优二叉树。哈夫曼树的构建构建思路代码实现哈夫曼编码的生成编码生成思路代码实现完整代码展示以及代码测试...原创 2021-06-18 17:10:37 · 103958 阅读 · 132 评论 -
有 1000 瓶药物,但是其中有一瓶是有毒的,老鼠只要服用任意量有毒药水就会在一个星期内死掉!请问,在一个星期后找出有毒的药物,最少需要多少只小白鼠?
在程序员面试的时候面试官有时会考我们一些计算机编程方面的智力题,这便是一道有趣的智力题,这道题考察了我们对bit位的灵活运用。首先1000与1024相差无几,于是我们可以用10个bit位来对这1000瓶药物进行编号,也就是将第n瓶药物的编号转化为对应的二进制。然后我们拿10个空瓶编号为(10)(9)(8)(7)(6)(5)(4)(3)(2)(1)。将二进制的第一位(最右边的为第一位)为1的瓶子每瓶取一滴药水装入编号为(1)的瓶子,将二进制的第二位为1的瓶子每瓶取一滴药水装入编号为(2)的瓶子,以此类推原创 2021-01-23 17:01:13 · 23193 阅读 · 80 评论 -
三子棋游戏代码+代码分析
为了让逻辑看起来更加清晰,我们这次就创建3个文件来敲代码,1个头文件(game.h),2个.c文件(game.c和test.c)。game.h文件中主要写一些预处理信息、一些需要用到的现有的函数的头文件和自定义函数的声明。#define _CRT_SECURE_NO_WARNINGS 1#define ROW 3#define COL 3#include<stdio.h>#include<time.h>#include<stdlib.h>#include原创 2021-01-24 19:02:35 · 3331 阅读 · 6 评论 -
扫雷游戏代码+代码分析
要用代码实现一个扫雷游戏也需要写两百多行代码,也是一个不小的工程量了,所以为了逻辑更加清晰明了,我们还是和写三子棋游戏一样创建3个文件来写代码。1个头文件(game.h),2个.c文件(game.c和test.c)。game.h文件中主要还是写一些预处理信息、一些需要用到的现有的函数的头文件和自定义函数的声明。#define _CRT_SECURE_NO_WARNINGS 1//地雷的总数#define COUNT 10#define ROW 9//扫雷的行数#define COL 9//扫原创 2021-01-25 18:00:03 · 7846 阅读 · 1 评论 -
1000!有几位数,为什么?
1000!=1000 * 999 * 998 * … * 2 * 1,可以见得1000!是一个很大的数。那么如何计算1000!的位数呢?我们知道任何一个数都可以用科学计数法表示,比如1234=1.234 * 103我们如果对该等式两边同时取10的对数,那么等式就变为log10(1234)=log10(1.234 * 103)也就等价于log10(1234)=log10(1.234) +log10103最后变为log10(1234)=log10(1.234)+3我们发现1234的位数就等于原创 2021-01-26 16:20:01 · 4400 阅读 · 5 评论 -
用函数递归的方法解决汉诺塔问题
函数递归算法的运用有一个经典例题,那就是汉诺塔问题,接下来就让我们一起来看看如何用函数递归来解决汉诺塔问题叭!汉诺塔问题的起源:汉诺塔(又称河内塔)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。面对庞大的数字(移动圆片的次数)18446744073709551615,原创 2021-01-17 20:41:52 · 8747 阅读 · 8 评论 -
如何生成随机数+原理详细分析
说到如何生成一个随机数,可能当你百度后会看到这样一段代码。srand((unsigned int)time(NULL));int ret = rand();那么一个随机数到底是如何生成的呢?我相信善于探索的你一定想知道这其中的原理,那么话不多说,进入正题把!一个随机数到底是如何生成的:说到生成随机数我们都知道要用到一个rand函数,那么这个函数究竟是如何运用的呢,我们可以打开MSDN看看这个函数的用法这里的第一句说到rand函数会返回一个从0到RAND_MAX的整型,那么RAND_MAX的值原创 2021-01-20 15:44:24 · 8803 阅读 · 4 评论 -
结构体内存对齐(如何计算结构体的大小)
文章目录结构体内存对齐规则结构体大小计算 - 三步曲为什么存在内存对齐?设计结构体时的技巧修改默认对齐数结构体内存对齐规则我们知道,整型变量有自己的大小,浮点型变量有自己的大小,数组也有自己的大小,那么结构体有没有自己的大小呢?回答是肯定的,结构体也有自己的大小,但是结构体的大小并不是简单地将每个结构体成员的大小相加就能得到。结构体的大小计算遵循结构体的对齐规则:第一个成员在与结构体变量偏移量为0的地址处。(即结构体的首地址处,即对齐到0处)其他成员变量要对齐到某个数字(对齐数)的整数倍的地址原创 2021-03-03 22:13:56 · 17700 阅读 · 29 评论 -
斐波那契数(Fibonacci)递归求法与迭代求法及它们各自的优缺点
文章目录什么是斐波那契数列?递归方法求第n个斐波那契数迭代方法求第n个斐波那契数递归法与迭代法各自的优缺点什么是斐波那契数列?斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)原创 2021-03-13 13:22:07 · 6650 阅读 · 0 评论 -
可保存数据到文件的通讯录代码+代码分析
文章目录前言保存通讯录内数据到文件加载数据到通讯录代码总览前言在之前我们已经写过两个版本的通讯录了:第一个是静态版本的通讯录,该通讯录一运行起来就开辟了一大块内存空间,用于存储1000个联系人的信息,并且运行结束数据也就销毁了。该通讯录比较死板,存储的联系人信息最多就是1000个,你若是没有那么多联系人信息需要存储,那么空间就白白浪费掉了,你若是还有更多的联系人信息需要存储,该通讯录也不能再增加容量。第二个是可以根据用户需要存储的联系人个数,按需开辟内存空间以供用户使用的动态版本的通讯录,该通讯录解原创 2021-03-15 15:36:21 · 23501 阅读 · 2 评论 -
通讯录代码+代码分析
文章目录初始化一个通讯录通讯录各个功能的逐个分析添加一个联系人的信息删除一个联系人的信息查找指定联系人并打印其信息修改指定联系人的信息打印通讯录中的全部信息通过名字排序通讯录中联系人的先后顺序整体代码格式初始化一个通讯录首先,通讯录中每个联系人的信息至少包括:姓名、年龄、性别、电话、住址。我们可以将这些内容定义为一个结构体,因为每个联系人的信息都有这几个要素:struct PeoInfo{ char name[15]; int age; char sex[5]; int tele[12];原创 2021-02-26 15:51:42 · 12760 阅读 · 9 评论 -
动态开辟内存空间的通讯录代码+代码分析
文章目录前言改进通讯录类型改进初始化通讯录的函数改进用于添加联系人的函数增加销毁通讯录信息的功能代码总览前言在通讯录代码+代码分析中,我们已经实现了通讯录的基本功能,但是细心的博友可能已经发现了,这个通讯录是一个静态的通讯录,一进入该通讯录就会开辟一大块空间,用于存放1000个联系人的信息。这样的做法其实是不合适的,对于某些不善于交友(或者说只交挚友)的朋友们来说,这种通讯录会消耗不必要的内存空间,因为它们的通讯录中可能只有几十个联系人,一上来就开辟用于存放1000个联系人的内存空间未免有些“奢侈”;原创 2021-03-11 23:10:30 · 1030 阅读 · 0 评论 -
三种蛇形填数
一、S形蛇形填数这是蛇形填数中最简单的一种,我们只需要按照S形的方法填充数字即可。我们可以发现如果我们定义一个二维数组,那么二维数组的第0列、第2列、第4列,即偶数列,数字都是从上往下依次填充的;而第1列、第3列、第5列,即奇数列,数字都是从下到上依次填充的。#include<stdio.h>int main(){ int n = 0; int arr[100][100] = { 0 }; scanf("%d", &n);//输入需要填充的数组的大小,arr[n][n]原创 2021-01-30 20:49:35 · 12750 阅读 · 9 评论 -
死亡游戏
文章目录游戏介绍代码实现游戏介绍这是本质上是一个猜数字游戏,但是只要略施手段就能将其变成一个死亡游戏。游戏可选择难度,难度一:猜1-100之间的数字;难度二:猜1-1000之间的数字;难度三:猜1-10000之间的数字。难道选择完毕就可以进行猜测环节,当你猜测的数大于待猜测数字时,系统会提醒你猜大了;当你猜测的数小于待猜测数字时,系统会提醒你猜小了;当你猜对了时,游戏结束。但你以为就这么简单?这样玩游戏自然没意思,况且只是一个猜数字游戏,那得多无聊,让我们为其增添一些乐趣吧。加入关机程序,当玩家开原创 2021-02-20 17:14:33 · 1559 阅读 · 11 评论 -
C语言中scanf和printf、fscanf和fprintf、sscanf和sprintf这三对函数的区别
文章目录前言printf和scanf函数fprintf和fscanf函数sprintf和sscanf函数前言C语言中,许多函数的函数名过于相似,使用者要是不能很好地区分这些函数,就会造成误用,最终导致代码的结果大相径庭。对于printf和scanf函数、fprintf和fscanf函数、sprintf和sscanf函数这三对函数,它们的函数名都只是各自相差一个字母而已,但是功能及其用法却并不相同,有多少人能够真正分清楚它们各自的功能与使用方法呢?其中,知道printf和scanf函数的人最多,其次是f原创 2021-04-04 17:37:08 · 3143 阅读 · 12 评论 -
对指针的详细认识(一)—— 指针概念+指针类型+野指针+指针运算+二级指针
文章目录指针是什么?指针的定义指针的大小指针类型指针有哪些类型?指针类型有什么意义?野指针野指针的成因如何避免野指针指针运算指针+-整数指针-指针指针的关系运算二级指针指针是什么?指针的定义在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的内存单元,可以说地址指向该内存单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。这是官方对指针的定义,其实我们可以理解为原创 2021-02-14 15:19:57 · 4417 阅读 · 8 评论 -
对指针的详细认识(二)—— 字符指针+指针数组+数组指针+指针参数
文章目录字符指针指针数组数组指针数组指针的定义&数组名 VS 数组名在对指针的详细认识(一)中我们已经知道:指针就是一个用于存放地址的变量,地址唯一标识一块内存空间。指针的大小是固定的4/8个字节(32位平台/64位平台)。指针是有类型的,指针的类型决定了指针±整数的步长和指针解引用操作时的权限大小。指针的运算。在本篇博客中我们将继续探讨指针的高级内容。字符指针我们知道,在指针的类型中有一种指针类型叫字符指针char * 。字符指针的一般使用方法为:#include<s原创 2021-02-16 19:43:37 · 1608 阅读 · 7 评论 -
对指针的详细认识(三)—— 函数指针+函数指针数组+回调函数
文章目录函数指针函数指针的定义函数指针的使用函数指针数组函数指针数组的定义函数指针数组的使用 - 模拟计算器指向函数指针数组的指针回调函数回调函数的定义回调函数的使用 - qsort函数函数指针函数指针的定义函数指针和我们在对指针的详细认识(三)中学习的数组指针非常相似。我们知道,整型指针是指向整型的指针,数组指针是指向数组的指针,其实,函数指针就是指向函数的指针。和学习数组指针一样,学习函数指针我们也需要知道三点:( )的优先级要高于 * 。一个变量除去了变量名,便是它的变量类型。一个指原创 2021-02-18 16:44:48 · 1155 阅读 · 2 评论 -
代码从 “ctrl+F5” 到 “屏幕输出” 所经历的过程详解——翻译环境(编译+链接)+ 执行环境
文章目录前言翻译环境编译 = 预编译 + 编译 + 汇编链接执行环境前言我们用编译器写完代码后,只需Crtl+F5即可让代码跑起来,最后将结果输出到屏幕上,那么你知道在这个过程中都经过了哪些步骤吗?其实,在ANSI C(标准C)的任何一种实现中,都存在两个不同的环境,即翻译环境和执行环境。翻译环境,在这个环境中,代码被转换为可执行的机器指令。执行环境,它用于实际执行代码。我们运行代码时都将经历这两个过程,最后才将运行结果呈现在屏幕上。翻译环境在翻译环境下,要经历两个过程,即编译和链接。我们写的原创 2021-03-25 19:13:05 · 3377 阅读 · 12 评论 -
预处理详解(一)—— 预定义符号
文章目录预定义符号预定义符号的使用预定义符号在C语言中,有一些有意思的预定义符号,这些预定义符号都是语言内置的,即以及定义好的,我们可以直接使用。预定义符号主要有以下几个:__FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__FUNCTION__ //进行编译的函数__STDC__ //如果编译器遵循ANSI C,其值原创 2021-03-27 17:04:50 · 3274 阅读 · 11 评论 -
预处理详解(二)—— #define定义宏和标识符 + 宏和函数的对比 + #和##的作用 + #undef
文章目录#define定义标识符#define定义宏#define的替换规则带副作用的宏参数宏和函数的区别命名约定#和###define定义标识符#define定义宏#define的替换规则带副作用的宏参数宏和函数的区别命名约定#和##...原创 2021-03-28 21:58:00 · 3193 阅读 · 10 评论 -
预处理详解(三)—— 命令行定义 + 条件编译 + 文件包含
文章目录前言前言原创 2021-03-30 22:13:46 · 2001 阅读 · 4 评论 -
关于文件你必须了解的一些基本概念
文章目录什么是文件?文件名文件类型文件缓冲区文件指针什么是文件?文件名文件类型文件缓冲区文件指针原创 2021-03-16 15:14:51 · 2738 阅读 · 4 评论 -
文件操作函数(一)—— 文件的打开与关闭函数
文章目录前言文件打开函数 - fopen函数介绍文件的打开形式相对路径与绝对路径文件关闭函数 - fclose前言我们已经了解了文件的基本概念,那么我们如何通过代码对某一个文件进行一些操作呢?比如如何打开文件、关闭文件以及如何向文件中写入或是读取数据呢?在头文件stdio.h中包含了一系列的文件操作函数,以便我们对特定的文件进行相应的操作。学会对文件进行操作后,我们就可以将代码与文件联系起来,这样能让编程变得更有意思不是吗?比如你可以用代码写一个游戏,当游戏结束后可以将游戏当前的数据保存到一个文件中,原创 2021-03-18 18:30:43 · 6524 阅读 · 5 评论 -
文件操作函数(二)—— 文件的顺序读写
文章目录前言文件的顺序读写字符输入输出函数 - fputc和fgetc文本行输入输出函数 - fputs和fgets格式化输入输出函数 - fscanf和fprintf二进制输入输出函数 - fwrite和fread文件的随机读写前言在文件操作函数(一)中,我们已经学会了怎样正确地打开和关闭一个文件,即我们已经学会了一件事的开头和结尾,不要以为已经结束了,这才刚刚开始,真正重要的是打开了文件后,如何操作文件中的数据(输入数据和输出数据)。对文件数据的读写可以分为顺序读写和随机读写。顺序读写,即挨着顺序原创 2021-03-20 15:49:35 · 3923 阅读 · 8 评论 -
文件操作函数(三)—— 文件的随机读写
文章目录前言前言原创 2021-03-23 08:55:04 · 4080 阅读 · 21 评论 -
文件操作函数(四)—— 文件的结束判定
文章目录前言前言原创 2021-03-23 17:41:50 · 2483 阅读 · 6 评论 -
C语言中运算符的优先级问题(如何巧妙记忆运算符的优先级顺序)
文章目录C语言中的运算符C语言中运算符的优先级帮助记忆优先级的方法先粗分再细分最后吃透因不明确优先级而造成的常见问题C语言中的运算符C语言中的运算符说多也多,说不多也不多,包括以下运算符:运算符类别运算符下标引用、函数调用和结构成员[ ]、( )、->、.单目运算符!、~、++、–、+、-、sizeof、(type)、*、&算术运算符+、-、*、/、%移位运算符<<、>>关系运算符>、>=、<原创 2021-03-12 20:40:25 · 7307 阅读 · 1 评论 -
柔性数组(0长度数组)
文章目录什么是柔性数组?柔性数组的特点柔性数组的使用模拟实现柔性数组的功能柔性数组的优势什么是柔性数组?柔性数组这个概念相信大多数人博友都没有听说过,但是它确实存在。在C99中,结构(结构体)的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员。比如:struct S{ int n; int arr[];//柔性数组成员};或者是:struct S{ int n; int arr[0];//柔性数组成员};柔性数组的特点一、结构中柔性数组成员前面必须至少有一个其他成原创 2021-03-09 18:23:47 · 1341 阅读 · 2 评论 -
动态内存管理(开辟以及释放动态内存空间)
文章目录前言malloc函数calloc函数realloc函数free函数 - 避免内存泄漏常见的动态内存错误前言如果我们被问道:如何创建一个可以根据用户需求来开辟大小的数组?可能有些博友会写出如下代码:#include <stdio.h>int main(){ int n = 0; scanf("%d", &n); int arr[n]; return 0;}这个代码在C99标准下是可以运行的,但大多数编译器并不支持C99标准,所以这种代码缺乏了跨平台性(可移原创 2021-03-05 22:31:26 · 2859 阅读 · 2 评论 -
整型和浮点型在内存中的存储
整型在内存中的存储要了解整型在内存中的存储方式,我们首先要了解几个概念:原码、反码、补码计算机中的有符号数有三种表示方法,即原码、反码和补码。三种表示方法均由符号位和数值位组成,符号位为0表示正数,符号位为1表示负数,但数值位的三种表示方法各不相同。原码:直接将数字按照正负数的形式翻译成二进制即可。反码:将原码符号位不变,其他位依次按位取反即可得到反码。补码:反码加一即可得到补码。(注:对于正数来说,它们的原码、反码和补码均相同。)对于整型来说:数据存放内存中其实存放的是补码。这是原创 2021-02-01 15:19:27 · 1081 阅读 · 0 评论 -
通过一道面试题带你了解内存分析和调试的重要性
曾经有一家公司有一道面试题目如下:在Linux x86_64 gcc环境下,下面的程序会出现什么问题?运行结果是什么?为什么?肯定很多面试者看到了就立马说:“数组越界了嘛。”确实如此,但是结果是什么呢?想必很多人都是不知道的,结果是死循环打印数字,让我们来分析分析。因为我用的是VS编译器,那么我这里就写一个和题目相仿的题来分析:#include <stdio.h>int main(){ long i; long arr[16]; for (i = 0; i <= 18原创 2021-01-28 15:22:29 · 1755 阅读 · 4 评论 -
字符串函数中的拷贝、追加和比较函数(strcpy,strcat,strcmp)
文章目录一、strlen - 求字符串长度1.如何使用2.模拟实现(三种方式)二、strcpy - 字符串拷贝1.如何使用2.模拟实现三、strcat - 字符串追加1.如何使用2.模拟实现四、strcmp - 字符串比较1.如何使用2.模拟实现五、strncpy、strncat、strncmp - 可限制操作长度1.strncpy2.strncat3.strncmp一、strlen - 求字符串长度1.如何使用size_t strlen( const char *string );strlen函原创 2021-02-07 17:52:24 · 4484 阅读 · 2 评论 -
字符串函数中的求长度、查找、分割和错误报告函数(strlen,strstr,strtok,strerror)
文章目录一、strlen - 求字符串长度1.如何使用2.模拟实现(三种方式)二、strstr - 字符串查找1.如何使用2.模拟实现三、strtok - 字符串分割四、strerror、perror - 错误报告函数1.strerror2.perror一、strlen - 求字符串长度1.如何使用size_t strlen( const char *string );strlen函数是一个用于求字符串长度的库函数。它的参数是被求长度的字符串的起始地址,返回值是一个无符号整型。注意:参数指向原创 2021-02-09 18:54:04 · 1705 阅读 · 0 评论 -
内存函数中的拷贝、比较和设置内存函数(memcpy,memmove,memcmp,memset)
文章目录一、memcpy - 内存拷贝11.函数介绍2.模拟实现二、memmove - 内存拷贝21.函数介绍(与memcpy函数的区别)2.模拟实现三、memcmp - 内存比较四、memset - 内存设置一、memcpy - 内存拷贝11.函数介绍void *memcpy( void *dest, const void *src, size_t count );memcpy函数是一个用于拷贝两个不相关的内存块的函数。memcpy函数会从src的位置开始向后复制count个字节的数据到dest原创 2021-02-10 20:51:40 · 2556 阅读 · 5 评论