C语言之memcpy函数(c语言,百度,程序,编程语言)

时间:2024-04-28 15:36:28 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

    C%E8%AF%AD%E8%A8%80%E4%B9%8Bmemcpy%E5%87%BD%E6%95%B0

[cpp]view plaincopyC语言之memcpy函数C语言之memcpy函数

char*mymemcpy(char*dest,constchar*src,intn)

{

char*pdest;

char*psrc;

pdest=dest;

psrc=src;

for(n;n>0;n--)

{

*pdest=*psrc;

pdest++;

psrc++;

}

}

[cpp]view plaincopyC语言之memcpy函数C语言之memcpy函数

#include<stdio.h>

void*memcpy(void*dest,constvoid*src,size_tcount)

{

<spanstyle="white-space:pre"></span>if(NULL==dest||NULL==src||count<=0)

<spanstyle="white-space:pre"></span>returnNULL;

<spanstyle="white-space:pre"></span>while(count--)

<spanstyle="white-space:pre"></span>*dest++=*src++;

<spanstyle="white-space:pre"></span>returndest;

}

[cpp]view plaincopyC语言之memcpy函数C语言之memcpy函数

<prename="code"class="cpp">#include<stdio.h>

void*memcpy(void*dest,constvoid*src,size_tcount)

{

if(NULL==dest||NULL==src||count<=0)

returnNULL;

while(count--)

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

returndest;

}

[cpp]view plaincopyC语言之memcpy函数C语言之memcpy函数

void*memcpy(void*dest,constvoid*src,intcount)

{

<spanstyle="white-space:pre"></span>void*ptr=dest;

<spanstyle="white-space:pre"></span>if(NULL==dest||NULL==src||count<=0)

<spanstyle="white-space:pre"></span>returnNULL;

<spanstyle="white-space:pre"></span>while(count--)

<spanstyle="white-space:pre"></span>*(char*)dest++=*(char*)src++;

<spanstyle="white-space:pre"></span>returnptr;

}




[cpp]view plaincopyC语言之memcpy函数C语言之memcpy函数

void*memcpy(void*dest,constvoid*src,unsignedintcount);

{

if((src==NULL)||(dest==NULL))

return;

while(count--)

*dest++=*src++;

returndest;

}

dest都指到哪里去了?怎么着也得备份一下dest的值,好让函数返回的指针是从头开始的

[cpp]view plaincopyC语言之memcpy函数C语言之memcpy函数

void*memcpy(void*dest,constvoid*src,size_tcount)

{

char*tmp=dest;

constchar*s=src;

while(count--)

*tmp++=*s++;

returndest;

}

能否改进? src和dest都强制转换成char*类型的指针,那么copy一定是一个字节一个字节的完成?那么第三版来了

[cpp]view plaincopyC语言之memcpy函数C语言之memcpy函数

void*memcpy(void*dst,constvoid*src,size_tnum)

{

intnchunks=num/sizeof(dst);/*按CPU位宽拷贝*/

intslice=num%sizeof(dst);/*剩余的按字节拷贝*/

unsignedlong*s=(unsignedlong*)src;

unsignedlong*d=(unsignedlong*)dst;

while(nchunks--)

*d++=*s++;

while(slice--)

*((char*)d++)=*((char*)s++);

returndst;

}

C语言之memcpy函数

[cpp]view plaincopyC语言之memcpy函数C语言之memcpy函数

void*memcpy(void*dest,constvoid*src,size_tcount)

{

char*d;

constchar*s;

if(dest>(src+size))||(dest<src))

{

d=dest;

s=src;

while(count--)

*d++=*s++;

}

else/*overlap*/

{

d=(char*)(dest+count-1);/*offsetofpointerisfrom0*/

s=(char*)(src+count-1);

while(count--)

*d--=*s--;

}

returndest;

}




本文:C语言之memcpy函数的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:小代码 向原文学习 BST 简单的C语言版本下一篇:

87 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18