在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【C語言經(jīng)典面試題】源碼實(shí)現(xiàn)標(biāo)準(zhǔn)庫函數(shù)memcpy

嵌入式物聯(lián)網(wǎng)開發(fā) ? 來源:嵌入式物聯(lián)網(wǎng)開發(fā) ? 作者:嵌入式物聯(lián)網(wǎng)開發(fā) ? 2022-09-30 17:12 ? 次閱讀

C語言經(jīng)典面試題】源碼實(shí)現(xiàn)標(biāo)準(zhǔn)庫函數(shù)memcpy

你有面試中,要求寫memcpy的源碼實(shí)現(xiàn)嗎?本文給出一個參考寫法!

1 需求說明2 源碼實(shí)現(xiàn)2.1 函數(shù)申明2.2 功能實(shí)現(xiàn)3 源碼測試4 小小總結(jié)

1 需求說明

題目大意如下:

請參考標(biāo)準(zhǔn)C庫對memcpy的申明定義,使用C語言的語法寫出其實(shí)現(xiàn)源碼。

2 源碼實(shí)現(xiàn)

2.1 函數(shù)申明

通過查看man幫助,我們可以知道m(xù)emcpy函數(shù)的功能及其簡要申明。

NAME
       memcpy - copy memory area
?
SYNOPSIS
       #include 
?
       void *memcpy(void *dest, const void *src, size_t n);
?
DESCRIPTION
       The memcpy() function copies n bytes from memory area src to memory area dest.  The memory areas must not overlap.  Use memmove(3) if the memory
       areas do overlap.
?
RETURN VALUE
       The memcpy() function returns a pointer to dest.

2.2 功能實(shí)現(xiàn)

以下是我的一個簡單實(shí)現(xiàn)源碼,僅供參考:

char *my_memcopy(char* dest, const char *src, size_t len)
{
    assert(dest && src && (len > 0));

if (dest == src) {
;
} else {
        char *p = dest;
size_t i;
        for (i = 0; i < len; i++) {
            *p++ = *src++;
}
    } 
?
    return dest;
}

3 源碼測試

簡單的測試代碼如下:

#include 
#include 
?
int main(void)
{
    char buf[30] = "123456789abcdef";

printf("before-memcpy-buf: %s
", buf);
    my_memcopy(buf + 5, buf, 3);
printf("after-memcpy-buf: %s
", buf);
?
printf("before-memcpy-buf: %s
", buf);
    my_memcopy(buf + 5, buf, 9);
printf("after-memcpy-buf: %s
", buf);
?
return 0;
}
?

簡單寫了build.sh腳本做編譯測試:

#! /bin/bash -e
?
CFLAGS="-Wall -Werror"
cmd="gcc *.c $CFLAGS -o test"
?
if [ "$1" = "clean" ]; then
    rm -rf test
    echo "Clean build done !"
    exit 0
fi
?
echo $cmd && $cmd

執(zhí)行編譯后,運(yùn)行小程序的結(jié)果:

c_c++/memmove$ ./test 
before-memcpy-buf: 123451239abcdef
after-memcpy-buf: 123451239abcdef
?
before-memcpy-buf: 12345123451239f
after-memcpy-buf: 12345123451234f
?

從運(yùn)行結(jié)果上看,基本滿足了題目要求,有心的讀者可以進(jìn)一步測試其他測試用例。

4 小小總結(jié)

memcpy的源碼實(shí)現(xiàn),核心就是內(nèi)存拷貝分,盡管它和memmove的接口原型是一樣的,但是它們實(shí)現(xiàn)的功能還是有本質(zhì)區(qū)別的,你都get到了嗎?

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7608

    瀏覽量

    137119
  • 源碼
    +關(guān)注

    關(guān)注

    8

    文章

    647

    瀏覽量

    29281
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4338

    瀏覽量

    62740
收藏 人收藏

    評論

    相關(guān)推薦

    C語言進(jìn)階】面試題:請使用宏定義實(shí)現(xiàn)字節(jié)對齊

    C語言進(jìn)階】面試題:請使用宏定義實(shí)現(xiàn)字節(jié)對齊
    的頭像 發(fā)表于 07-11 09:21 ?2819次閱讀
    【<b class='flag-5'>C</b><b class='flag-5'>語言</b>進(jìn)階】<b class='flag-5'>面試題</b>:請使用宏定義<b class='flag-5'>實(shí)現(xiàn)</b>字節(jié)對齊

    經(jīng)典面試題】請使用C語言編程實(shí)現(xiàn)對IPV4地址的合法性判斷

    經(jīng)典面試題】請使用C語言編程實(shí)現(xiàn)對IPV4地址的合法性判斷
    的頭像 發(fā)表于 05-16 15:23 ?1789次閱讀

    java經(jīng)典面試題深度解析

    回答面試題Int 與Integer的區(qū)別第三節(jié) 以數(shù)據(jù)結(jié)構(gòu)挖掘集合面試考點(diǎn)第四節(jié) 經(jīng)典面試題重載與重寫第五節(jié) 如何回答面試官提問Java的接
    發(fā)表于 06-20 15:16

    C語言 經(jīng)典面試題

    C語言經(jīng)典面試題目.doc
    發(fā)表于 08-05 22:03

    c語言面試題,c++面試題下載

    c語言面試題,c++面試題1. static有什么用途?(請至少說明兩種) 1) 限制變量的作用域 2) 設(shè)置變量的存儲域 2.&
    發(fā)表于 10-22 11:19 ?5次下載

    c語言面試題

    c語言面試題集(單片機(jī))C language problem(20151125084232)
    發(fā)表于 12-18 14:05 ?9次下載

    c語言面試題

    c語言面試題
    發(fā)表于 11-05 16:48 ?0次下載

    C語言經(jīng)典面試題

    面試題
    發(fā)表于 12-20 22:41 ?0次下載

    C語言經(jīng)典面試題

    C語言 經(jīng)典面試題
    發(fā)表于 01-05 11:27 ?0次下載

    經(jīng)典硬件面試題精選及解答

    經(jīng)典硬件面試題精選及解答
    發(fā)表于 11-29 18:02 ?0次下載

    C語言經(jīng)典面試題函數(shù)指針數(shù)組的定義是怎么樣的?

    經(jīng)典面試題,有必要了解下!
    的頭像 發(fā)表于 10-05 16:35 ?2285次閱讀
    【<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>經(jīng)典</b><b class='flag-5'>面試題</b>】<b class='flag-5'>函數(shù)</b>指針數(shù)組的定義是怎么樣的?

    C語言經(jīng)典面試題】static關(guān)鍵字的作用有哪些?

    經(jīng)典面試題,有必要了解下!
    的頭像 發(fā)表于 10-02 12:00 ?2682次閱讀
    【<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>經(jīng)典</b><b class='flag-5'>面試題</b>】static關(guān)鍵字的作用有哪些?

    C語言經(jīng)典面試題】求數(shù)組元素的個數(shù)的宏定義

    經(jīng)典面試題,有必要了解下!
    的頭像 發(fā)表于 10-02 11:58 ?3562次閱讀
    【<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>經(jīng)典</b><b class='flag-5'>面試題</b>】求數(shù)組元素的個數(shù)的宏定義

    分享10道有趣的嵌入式C語言面試題及答案

    10個C語言面試題,涉及指針、進(jìn)程、運(yùn)算、結(jié)構(gòu)體、函數(shù)、內(nèi)存,看看你能做出幾個!
    的頭像 發(fā)表于 05-09 10:54 ?2805次閱讀

    c語言面試題集(完整版)

    電子發(fā)燒友網(wǎng)站提供《c語言面試題集(完整版).pdf》資料免費(fèi)下載
    發(fā)表于 10-20 11:20 ?2次下載
    <b class='flag-5'>c</b><b class='flag-5'>語言</b><b class='flag-5'>面試題</b>集(完整版)
    主站蜘蛛池模板: 亚洲特级aaaaaa毛片| 国产免费一级在线观看| 香蕉视频一级| 亚洲成a人片在线观看中| 中文一区| 亚洲第一页视频| 中文字幕不卡免费高清视频| 欧美另类激情| jdav视频在线观看| 轻点灬大ji巴太粗太大了小说| 奇米色影院| 日本午夜片成年www| 亚洲成在| 色老头影视| 久草色播| 一级在线观看视频| 欧美成人天天综合天天在线| 18毛片| 日本黄色大全| 日韩毛片免费线上观看| 九九热国产在线| 天天综合天天干| 黄色免费网站视频| 中文字幕一区二区三| 色吧首页dvd| 男女性生动态免费视频| 一区二区三区在线观看免费| fenfencao在线观看免费视频| 热九九精品| 亚洲haose在线观看| 在线观看视频免费| 欧洲一卡二卡乱码新区| 亚洲天堂视频在线播放| 91视频观看免费| 国产成人精品日本亚洲语音1| 国产午夜在线观看视频| 韩国激情啪啪| 五月天婷婷在线视频国产在线| videossexotv极度另类高清| 国产日韩精品欧美一区色| 狠狠五月婷婷|