<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jasmine214--love

    只有當你的內心總是充滿快樂、美好的愿望和寧靜時,你才能擁有強壯的體魄和明朗、快樂或者寧靜的面容。
    posts - 731, comments - 60, trackbacks - 0, articles - 0

    memset,memcpy,strcpy 的區別

    Posted on 2010-08-14 18:23 幻海藍夢 閱讀(514) 評論(0)  編輯  收藏 所屬分類: C++
     

    原文:http://www.cnblogs.com/sophia0405/archive/2008/10/23/1293189.html
     memset,memcpy,strcpy 的區別

    一.函數原型
       strcpy
       extern char *strcpy(char *dest,char *src);
       #include <string.h>
      
    功能:把src所指由NULL結束的字符串復制到dest所指的數組中
       說明:src和dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字符串。
       返回指向dest的指針

    memcpy
    extern void *memcpy(void *dest,void *src,unsigned int count);
    #include <string.h>
       功能:由src所指內存區域復制count個字符串到dest所指內存區域.
       說明:src和dest所指內存區域不能重疊,函數返回指向dest的指針.
      
       memset
       extern void *memset(void *buffer,int c,int count);
       #include <string.h>
       功能:把buffer所指內存區域的前count個字節設置成字符c
       說明:返回指向buffer的指針.


     

    二.區別
        memset
    用來對一段內存空間全部設置為某個字符,一般用于在對定義的字符串初始化為' '或者'"0';
        例: char a[100];
              memset(a,'"0',sizeof(a));
       
       memcpy 是用來做內存拷貝,可以用來拷貝任何數據類型的對象,可以指定拷貝的數據長度;
       例:
               char a[100],b[50];
               memcpy(b,a,sizeof(b));   //注意:如果使用sizeof(a),會造成內存溢出
       mem是一段內存,他的長度,必須自己記住.memcpy是見著什么拷貝什么。
       
        strcpy 就只能拷貝字符串,它遇到'"0'就結束拷貝;
          例:char a[100],b[50];
                  strcpy(a,b);
                  如用strcpy(b,a)要注意a中的字符串長度(第一個'"0'之前) 是否超過50,如果超過,則會造成b的
    內存溢出.它是不會拷貝'"0'的,所以一般還有加一個語句:
                  *a='"0';
      
    三.使用技巧
          memset 可以方便的清空一個數據結構的變量或數組.
          如:
            struct sample_struct
           {
                  char csName[16];
                  int iSeq;
                  int iType;
           };
           對于變量
           struct sample_struct stTest;
           一般情況下,初始化stTest的方法:
            stTest.csName[0]='"0';
            stTest.iSeq=0;
            stTest.iType=0;
        而用memset:
           memset(&stTest,0,sizeof(struct sample_struct));
        如果是數組:
        struct sample_struct TEST[100];
        memset(TEST,0,sizeof(struct sample_struct)*100);

    strcpy是拷貝字符串,以"0為標志結束(即一旦遇到數據值為0的內存地址拷貝過程即停止)
    strcpy的原型為
    char *strcpy(char *dest, const char *src)
    而memcpy是給定來源和目標后,拷貝指定大小n的內存數據,而不管拷貝的內容是什么(不僅限于字符)
    memcpy的原型為
    void *memcpy(void *dest, const void *src, size_t n);

    主站蜘蛛池模板: 国产亚洲精品2021自在线| jizz中国免费| 亚洲精品乱码久久久久蜜桃| 看免费毛片天天看| 无码一区二区三区AV免费| 四虎影视在线永久免费看黄| 亚洲AV乱码久久精品蜜桃| 亚洲五月丁香综合视频| 一级做α爱过程免费视频| 37pao成人国产永久免费视频| 国产精品视_精品国产免费| 久久综合图区亚洲综合图区| 亚洲乱色熟女一区二区三区蜜臀| 久青草视频97国内免费影视| 成人超污免费网站在线看| 亚洲国产精品VA在线观看麻豆| 国产亚洲福利在线视频| 久久国产精品国产自线拍免费| 日本免费一区二区三区最新vr| 亚洲视频在线免费观看| 一个人免费观看视频在线中文| 亚洲国产成人五月综合网 | 久久午夜羞羞影院免费观看| 日本免费的一级v一片| 亚洲精品无码久久久久久| 国产老女人精品免费视频| 欧美日韩亚洲精品| 97在线观免费视频观看| 亚洲中文字幕无码中文字| 18女人水真多免费高清毛片| 亚洲激情电影在线| 日本免费高清视频| 浮力影院亚洲国产第一页| 亚洲精品精华液一区二区| 免费A级毛片无码A| 亚洲国产精品日韩av不卡在线| 国产成人免费永久播放视频平台 | 国产又黄又爽又猛的免费视频播放 | 免费观看黄色的网站| 亚洲AV日韩AV永久无码绿巨人| 99热这里有免费国产精品|