机构网站源码河南省住房和城乡建设厅官网查询
2026/2/18 22:52:06 网站建设 项目流程
机构网站源码,河南省住房和城乡建设厅官网查询,旅游网站建设费用预算,建产品网站怎么做在使用内存函数的时候我们需要包含stdlib.h的头文件 目录 一 memcpy使⽤和模拟实现 (1)使用 (2)模拟实现 二 memmove使⽤和模拟实现 (1)使用 (2)模拟实现 三 memset函数的使⽤ 四 memcmp函数的使⽤ 一 memcpy使⽤和模拟实现 (1)使用 我们先来查看一下memcp…在使用内存函数的时候我们需要包含stdlib.h的头文件目录一 memcpy使⽤和模拟实现(1)使用(2)模拟实现二 memmove使⽤和模拟实现(1)使用(2)模拟实现三 memset函数的使⽤四 memcmp函数的使⽤一 memcpy使⽤和模拟实现(1)使用我们先来查看一下memcpy函数的相关的语法知识我们可以看到这个memcpy函数似乎和strncpy函数有异曲同工的地方memcpy通用型可处理任意数据类型字符、整型、浮点型、结构体、数组等。比如可以直接拷贝一个int数组或一个struct对象。strncpy只能处理字符串以\0结尾的字符数组对非字符串数据处理无意义。所以我们来给出一个memcpy函数的代码示例:#define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h int main() { int a[] { 1,2,3,4,5 }; int b[10] { 0 }; memcpy(b, a, sizeof(a)); for (int i 0; i 5; i) { printf(%d , b[i]); } return 0; }注意这里的第三个参数代表的是字节数,不是数据的个数.(2)模拟实现#define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h #includeassert.h void* mymemcpy(void* dest, void* sor, int size) { assert(dest); assert(sor); void* ret dest; while (size--) { *((char*)dest) *((char*)sor); dest ((char*)dest); sor ((char*)sor); } return ret; } int main() { int a[] { 1,2,3,4,5 }; int b[10] { 0 }; mymemcpy(b, a, sizeof(a)); for (int i 0; i 5; i) { printf(%d , b[i]); } return 0; }二 memmove使⽤和模拟实现(1)使用在我们使用memcpy的时候我们如果要处理的是重复的内存的复制呢,也就是将数组内的前5个数据,向后复制,似乎memcpy就无法处理这个问题• 和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。• 如果源空间和⽬标空间出现重叠就得使⽤memmove函数处理。下面将给出代码的示例:#define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h #includestdlib.h int main() { int a[10] { 1,2,3,4,5,8,9 }; memmove(a2, a, sizeof(int) * 3); for (int i 0; i 10; i) { printf(%d , a[i]); } return 0; }运行结果如图所示:那么这个函数该怎么实现呢???(2)模拟实现再给出代码之前我们来看几张图片:如果我们将要处理的情况是这样的时候我们应该怎么实现数据的转移呢?ds的情况如果我们从头开始转移的话我们可以看到之后的数据将会被我们修改导致错误.但是当我们这样处理的时候就解决了问题.那是否从尾部开始转移就能解决全部的情况呢?在这样的情况下试试呢我们可以看到在这种情况下尾部开始就不能使用了.但是这时候从头部开始又可行了.所以在模拟实现这个代码的核心就是弄清楚从头部,从尾部的分节点.#define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h #includestdlib.h #includeassert.h void* mymemmove(void* dest, void* sor, int size) { assert(dest); assert(sor); void* ret dest; if (dest sor || (char*)dest (char*)sor size) { while (size--) { *((char*)dest) *((char*)sor); dest (char*)dest 1; sor (char*)sor 1; } } else { dest (char*)dest size - 1; sor (char*)sor size - 1; while (size--) { *((char*)dest) *((char*)sor); dest (char*)dest - 1; sor (char*)sor - 1; } } return ret; } int main() { int a[10] { 1,2,3,4,5,8,9 }; mymemmove(a2, a, sizeof(int) * 3); for (int i 0; i 10; i) { printf(%d , a[i]); } return 0; }三 memset函数的使⽤memset是⽤来设置内存的将内存中的值以字节为单位设置成想要的内容。代码示例:#define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h int main() { int a[10] { 1,2,4,5,6,7,8,8 }; memset(a, 0, sizeof(a)); for (int i 0; i 10; i) { printf(%d , a[i]); } return 0; }运行结果如图所示:四 memcmp函数的使⽤• ⽐较从ptr1和ptr2指针指向的位置开始向后的num个字节返回值如下:代码示例:#define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h #includestdlib.h int main() { char a[] hello; char b[] heLLo; int anmemcmp(a, b, sizeof(a)); printf(%d, an); return 0; }今天的内容就结束了,谢谢大家的观看,之后我将会讲解有关结构体的语法知识.

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询