最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解C語言中strcpy函數(shù)與memcpy函數(shù)的區(qū)別與實現(xiàn)

 更新時間:2022年12月29日 15:26:06   作者:ZHENGZJM  
這篇文章主要介紹了C語言中字符串拷貝函數(shù)(strcpy)與內存拷貝函數(shù)(memcpy)的不同及內存拷貝函數(shù)的模擬實現(xiàn),感興趣的小伙伴可以跟隨小編一起學習一下

字符串拷貝函數(shù)(strcpy)

函數(shù)原型

由圖可知,strcpy的形參是(目的地址,來源地址),返回值為char *。

應用實例

我們將一個存放“abcdefg”的字符數(shù)組arr的內容拷貝到字符數(shù)組brr之中。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
    char arr[10] = "abcdefg";
    char brr[10] = { 0 };
    strcpy(brr, arr);
    printf("%s", brr);
    return 0;
}

缺點

如果不是字符類型,還能這樣拷貝嗎?

我們發(fā)現(xiàn),編譯器直接報錯了,因為形參跟實參不兼容。 strcpy具有局限性,只能適用于字符類型的拷貝。我們想要任意類型的都能實現(xiàn)拷貝,那怎么辦呢?我們可以使用內存拷貝函數(shù),不管三七二十一,你在這個內存單元上,我就把你拷貝過去,這樣便實現(xiàn)了任意類型的拷貝 。

內存拷貝函數(shù)(memcpy)

函數(shù)原型

由圖可知,memcpy的返回類型是void*,它的形參是(目標地址,需要復制的地址,字節(jié)大?。?/p>

應用實例

我們依然將一個存放“abcdefg”的字符數(shù)組arr的內容拷貝到字符數(shù)組brr之中。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
    char arr[10] = "abcdefg";
    int ret = strlen(arr);//求出字符串的長度
    char brr[10] = { 0 };
    memcpy(brr, arr,ret*sizeof(char));//字節(jié)數(shù)=個數(shù)*數(shù)據(jù)類型大小
    printf("%s", brr);
    return 0;
}

這次我們試試整型數(shù)組能不能拷貝過去。 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
    int arr[10] = {1,2,3,4,5,6,7,8,9,10};
    int brr[10] = { 0 };
    memcpy(brr, arr, 10*4);//字節(jié)數(shù)=個數(shù)*數(shù)據(jù)類型大小
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", brr[i]);
    }
    return 0;
}

成功了,這說明memcpy的適用范圍強于strcpy,那么memcpy是怎么實現(xiàn)的呢?

memcpy的模擬實現(xiàn)(my_memcpy)

實現(xiàn)樣例

void* my_memcpy(void* dest, void* src, size_t count)
{
    void* ret=dest;
    while (count--)
    {
        *(char*)dest = *(char*)src;
        dest = (char*)dest + 1;
        src = (char*)src + 1;
    }
    return ret;
}

首先觀察它形式

我們依葫蘆畫瓢,也寫出類似的函數(shù)形式。 

void* my_memcpy(void* dest, void* src, size_t count)

具體實現(xiàn)

因為我們用的都是void*來接受參數(shù),目的是保證兼容性(畢竟你不知道使用者使用的時候用的是什么數(shù)據(jù)類型),但計算機不知道void*指的是什么,所以需要強制類型轉換。而強制類型轉換,換成什么類型好呢?如果我們用int型,我們知道一個int元素占4個字節(jié),那我們需要復制3個字節(jié)的東西咋辦?所以,我們用只占一個字節(jié)的char型。

*(char*)dest = *(char*)src;

在拷貝完一個字節(jié)之后,指針向后移動一個字節(jié)

dest = (char*)dest + 1;
src = (char*)src + 1;

那么我們如何控制拷貝多少個字節(jié)呢?用while搭配count就行。

while (count--)
    {
        *(char*)dest = *(char*)src;
        dest = (char*)dest + 1;
        src = (char*)src + 1;
    }

函數(shù)運行完了,我們隨便返回一個值就行。

return 0;

到此這篇關于詳解C語言中strcpy函數(shù)與memcpy函數(shù)的區(qū)別與實現(xiàn)的文章就介紹到這了,更多相關C語言 strcpy memcpy內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言版三子棋游戲

    C語言版三子棋游戲

    這篇文章主要為大家詳細介紹了C語言版三子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C/C++中輸入多組數(shù)據(jù)的方法

    C/C++中輸入多組數(shù)據(jù)的方法

    這篇文章主要為大家詳細介紹了C/C++中輸入多組數(shù)據(jù)的三種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • codeblocks安裝及使用超詳細圖文教程

    codeblocks安裝及使用超詳細圖文教程

    這篇文章主要介紹了codeblocks安裝及使用教程詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • C++ 中快排的遞歸和非遞歸實現(xiàn)

    C++ 中快排的遞歸和非遞歸實現(xiàn)

    這篇文章主要介紹了C++ 中快排的遞歸和非遞歸實現(xiàn)的相關資料,需要的朋友可以參考下
    2017-06-06
  • 基于C語言實現(xiàn)簡單的走迷宮游戲

    基于C語言實現(xiàn)簡單的走迷宮游戲

    這篇文章主要介紹了基于C語言實現(xiàn)簡單的走迷宮游戲,用到雙向隊列,方便在運行完畢后輸出經(jīng)過的點,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-04-04
  • C++可執(zhí)行文件絕對路徑值與VS安全檢查詳解

    C++可執(zhí)行文件絕對路徑值與VS安全檢查詳解

    這篇文章主要給大家介紹了關于C++可執(zhí)行文件絕對路徑值與VS安全檢查的相關資料,文中通過圖文以及實例代碼介紹的非常詳細,對大家學習或者使用C++具有一定的參考學習價值,需要的朋友可以參考下
    2023-01-01
  • C++之IO類,文件輸入輸出,string流練習題

    C++之IO類,文件輸入輸出,string流練習題

    這篇文章主要介紹了C++實現(xiàn)IO類的幾道數(shù)組練習題,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-09-09
  • QT使用udp實現(xiàn)發(fā)送與接收圖片

    QT使用udp實現(xiàn)發(fā)送與接收圖片

    這篇文章主要為大家詳細介紹了QT如何使用udp協(xié)議實現(xiàn)發(fā)送與接收圖片功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • 基于C語言編寫一個多功能計算器

    基于C語言編寫一個多功能計算器

    這篇文章主要為大家詳細介紹了如何基于C語言編寫一個多功能計算器,除了四則混合運算之外,還支持三角函數(shù)和絕對值等函數(shù),感興趣的小伙伴可以跟隨小編一起學習一下
    2023-08-08
  • C++中的static和const的關鍵字用法詳解

    C++中的static和const的關鍵字用法詳解

    這篇文章主要介紹了C++中的static和const的關鍵字用法詳解,這是一道經(jīng)常在面試中被問到的知識,本文給大家詳細介紹下,需要的朋友可以參考下
    2023-06-06

最新評論

牙克石市| 沙坪坝区| 封开县| 高唐县| 南雄市| 周宁县| 大田县| 安岳县| 潜山县| 浙江省| 锦州市| 遵化市| 新民市| 甘洛县| 海南省| 嘉峪关市| 昌图县| 贞丰县| 通辽市| 丰镇市| 邢台市| 手机| 大姚县| 陵水| 辰溪县| 白城市| 无极县| 汶上县| 乌兰浩特市| 兴隆县| 沐川县| 乐业县| 札达县| 曲周县| 仁怀市| 舟山市| 吉木萨尔县| 含山县| 精河县| 丰镇市| 洪江市|