解决方案

内存拷贝函数memcpy相关解析(C语言)

seo靠我 2023-09-24 10:51:05

memcpy方法解析

内存拷贝函数的一般用法memcpy()函数的拷贝原理分析以深浅拷贝为例分析memcpy的拷贝原理用memcpy()函数与不用memcpy()函数进行拷贝数据的区分

内存拷贝函数的一般SEO靠我用法

有两种拷贝函数,strcpy()和memcpy(),strcpy()只能对字符串进行拷贝复制,十分不通用,但是memcpy()可以对任意两个相同类型的数据进行拷贝复制,极大地方便了编程过程中的一些SEO靠我特殊需要。

函数语法:memcpy(void* to,void* from,int number);

意为从from复制大小为number的内容到to所在位置代码示例包含单个整型数据的copy和整型数组的SEO靠我copy,其他数据类型的copy都大致相同,就不一一给出示例了。 #include"stdio.h" #include"string.h" #incluSEO靠我de"stdlib.h" void main() {int arr0,arr1=333;memcpy(&arr0,&arr1,sizeof(int));printf("SEO靠我%d\n",arr0);int *arr2,arr3[3]={1,2,3};arr2 = (int *)malloc(sizeof(int));memcpy(arr2,arr3,3*sizeof(inSEO靠我t));printf("%d \n",arr2[2]);}

需要注意,在使用memcpy()函数时同strcpy()函数一样,都需包含string.h头文件

memcpy()函数的拷贝原理分析

以深浅拷贝为SEO靠我例分析memcpy的拷贝原理

memcpy()函数是从from位置复制一份数据到to所在位置,相当于我们常用的复制粘贴效果(类似于深拷贝),还有一种通过地址指向拷贝(也就是浅拷贝),下面我们通过代码和解SEO靠我析加以具体的分析。

用memcpy()函数与不用memcpy()函数进行拷贝数据的区分

用拷贝函数memcpy()实现数据拷贝(深拷贝) 代码 #include"stdio.h" SEO靠我 #include"stdlib.h" #include"string.h" void main() {char str1[10][10];priSEO靠我ntf("%d\n",sizeof(char)); //char 类型占1个字节printf("%d\n",sizeof(char *)); //char *占4个字节,char *表示的是地址,因此SEO靠我长度为4printf("%d\n",sizeof(str1)); //与下一个程序对比,在这里str不是以指针的形式出现,而是具体的字符串数组char str[3][10],ptr[3][10]={"SEO靠我mayongen1","mayongen2","mayongen3"};memcpy(str,ptr,8*sizeof(sizeof(char *))); //从ptr中,拷贝8*sizeof(chaSEO靠我r *)(即8*4=32字节)大小的空间容量信息,到str内//用内存拷贝函数将字符串数组ptr的内容复制过去的 这里是 用拷贝函数和不用拷贝函数时两者的区别for(int i=0;i<3;i++)pSEO靠我rintf("%s\n",*(str+i));printf("\n"); } 不用拷贝函数实现数据拷贝(浅拷贝) 代码 #include"stdio.SEO靠我h" #include"stdlib.h" #include"string.h" void main() {//str在这里是以二重字符SEO靠我串指针形式出现的char **str,ptr[3][10]={"mayongen1","mayongen2","mayongen3"};str=(char **)malloc(3*sizeof(chaSEO靠我r *));//申请了三个地址//在这里申请的空间给三个字符串的首地址了*str=ptr[0];*(str+1)=ptr[1];*(str+2)=ptr[2];//用地址传递的方式将字符串数组ptr的SEO靠我内容复制过去的for(int i=0;i<3;i++)printf("%s\n",*(str+i));printf("\n"); }
“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2