美文网首页C/C++知识点
memset,memcpy,memmove函数

memset,memcpy,memmove函数

作者: 木鱼_cc | 来源:发表于2018-05-21 20:16 被阅读3次

    这三个函数分别实现内存设置,内存拷贝和内存移动

    需要包含头文件#include <string.h>

    1.memset函数:内存的值重新设置

    void *memset(void *s ,int c ,size_t n);
    
    设置一块内存区域,第一个参数是内存首地址,第二个参数是要设置的值,第三个参数是这块内存的大小,单位:字节
    
    如:
    #include <string.h>
    int main(){
        
        char array[10] = { 0 );
        array[1] = 100;
        array[5] = 2;
        array[8] = 6;
    //想把这个数组所有成员再次初始化为0
    ===============原始=============
    fot(int i = 0 ; i< 10 ; i++){
        array[i] = 0;
    }
    ===============memset=============
    memset(array,0,sizeof(array));
    
    return 0;
    }
    

    2.memcpy函数:拷贝内存

    使用memcpy必须确保内存没有重叠

    内存重叠区域说明.png
    void *memcpy(void *dest, const void *src, size_t n);//内存拷贝
    第一个参数是**目标内存**首地址,第二个参数是**源内存**首地址,第三个参数是拷贝字节数
    
    int main(){
       int a1[10] = {1,2,3,4,5,6,7,8,9,10};
       int a2[10];
       memcpy(a2,a1,sizeof(a1));//把a1中所有的内存拷贝到a2,对应地拷
    
    sizeof(a1)改成4,只拷贝第1项
    
    }
    
    

    3.memmove函数:移动内存

    和memcpy很像,但是不需要考虑重叠

    void *memmove(void *dest, const void *src, size_t n);//内存移动,参数与memcpy一致
    
    int main(){
    
        int a1[10] = {1,2,3,4,5,6,7,8,9,10};
       int a2[10];
       memmove(a2,a1,sizeof(a1));//把a1中所有的内存拷贝到a2,对应地拷
    
    }
    
    

    相关文章

      网友评论

        本文标题:memset,memcpy,memmove函数

        本文链接:https://www.haomeiwen.com/subject/snbqjftx.html