2025年pic头文件(头文件ctype.h)

pic头文件(头文件ctype.h)这三个函数都是内存拷贝 目的都是将 N 个字节的源内存地址的内容拷贝到目标内存地址中 nbsp void memmove void dest void src int count nbsp nbsp nbsp void memcpy void dest void src int count nbsp nbsp

大家好,我是讯享网,很高兴认识大家。



这三个函数都是内存拷贝,目的都是将N个字节的源内存地址的内容拷贝到目标内存地址中。 

void * memmove(void *dest,void*src,int count)

     void *memcpy(void *dest,void *src,int count)

      void *memccpy(void*dest,void*src,int ch,int count)

       头文件 : #include <string.h>

       函数原型 : void *memcpy(void *dest, const void *src, size_t n)

       函数说明 : memcpy()用来拷贝src所指的内存内容前n个字节到dest所指的内存地址上。与strcpy()不同的                         是,memcpy()会完整的复制n个字节,不会因为遇到字符串结束’0’而结束

                  strcpy和memcpy主要有以下3方面的区别。

            1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、                              结构体、类等。

            2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符”0”才结束,所以容易溢                               出。memcpy则是根据其第3个参数

            3 、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy

        返回值:   返回指向dest的指针

void* memcpy(void* dest,const void* src, size_t n)


讯享网

 

       头文件: #include <string.h>

     函数原型: void *memccpy(void *dest, const void *src, int c, size_t n);

     函数说明:memccpy()用来拷贝src所指的内存内容前n个字节到dest所指的地址上。与memcpy()不同的                           是,memccpy()如果在src中遇到某个特定值(int c)立即停止复制。

     返回值:  如果c没有被复制,则返回NULL,否则,返回dest中字符c 后面紧挨一个字符位置的指针

     函数实现:

       函数原型: void *memmove(void *dest, const void *src, size_t n);

       函数说明:由src所指内存区域复制count个字节到dest所指内存区域。如果目标区域和源区域有重叠的话,                      memcpy会出现错误,而memmove能正确地实施拷贝,但这也增加了一点点开销。memmove能够保证源                串在被覆盖之前将重叠区域的字节拷贝到目标区域中。但复制后src内容会被更改。但是当目标区域与源区域                没有重叠则和memcpy函数功能相同。

      函数实现:

  输出数据会发现b中数据输出已被更改。 

  原因|dest - src |<count 
如果在使用这些函数时,分配给足够的空间,然后再使用就不会出现覆盖问题。也就是
说如果外部分配给的空间不足以存储要拷贝的数据时,就有可能出现源数据被覆盖更改
的问题。

观察输出结果。  
      把memmove(p,a,sizeof(a));改为memcpy(p,a,sizeof(a));或memccpy(p,a,‘e’,sizeof(a));再观察输出结果。  
      可以看出在目的存储空间不足时,便会出现源数据被覆盖改变的问题。  如果目的存储空间分配足够的空间,则便不会出现覆盖问题。 

小讯
上一篇 2025-04-22 08:11
下一篇 2025-04-23 14:48

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/206826.html