memcpy和strncpy有什么区别

来源:百度知道 编辑:UC知道 时间:2024/05/29 11:29:35
还有就是
char *p = new char[3];
p = "3";
strcpy(p,"44");//strcpy中,第一参数p指向的内存里是否不能先装入字符串,如上,再拷贝44就拷贝不了,会出内存错误?

c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。
功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中
1.source和destin所指的内存区域可能重叠,但是如果source和destin所指的内存区域重叠,那么这个函数并不能够确保source所在重叠区域在拷贝之前不被覆盖。而使用memmove可以用来处理重叠区域。函数返回指向destin的指针.
2.如果目标数组destin本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖n)。如果要追加数据,则每次执行memcpy后,要将目标数组地址增加到你要追加数据的地址。

strncpy 是 C语言的库函数之一,来自 C语言标准库,定义于 string.h,char *strncpy(char *dest, char *src, int n),把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回dest。
功能:(c/c++)复制字符串src中的内容(字符,数字、汉字....)到字符串dest中,复制多少由size_tn的值决定。如果src的前n个字节不含NULL字符,则结果不会以NULL字符结束。如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符长度+'\0'。

memcpy 是存储块 内容复制, 存储块大小 用 size_t 衡量。
void * memcpy ( void * destination, const void * source, size_t num );

strcpy 是字符内容 复制
char * strcpy ( char * destination, const char * source );

------------------------------
在 VC++ 编译器下
作为 C++ 程序是对的,作为 C 程