这篇文章给大家介绍memset与memcpy如何在C语言或c++中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
对数组的整体赋值,以及两个数组间的复制容易出的错,这里使用字符串头文件中的memset和memcpy进行
不必遍历数组,速度快。
之前没有头文件,显示decla
代码:
/* 项目:数组的整体赋值与复制 日期:2018/07/31 作者:Frank Yu memset(数组名,0或1,字节) memcpy(数组名,数组名,字节) */# include# include //memset需要头文件 # include #定义n 5 使用名称空间性病; int main () { int [n]; int b [n]; memset (0, sizeof (a));//初始化为0//memset (b, sizeof (b));//初始化为1,错误 memset (b, sizeof (b)); printf(“请输入% d个数:\ n", n); for (int i=0; i <>强结果截图:强>
# include & lt; iostream> # include & lt; string.h> 使用名称空间性病; struct SomeInfo { char id [30]; char[30]名称; }; struct TotalInfo { char [20]; SomeInfo [10]; }; myClass类 { 公众: myClass () { } ~ myClass () { } 空白memcopy (int, TotalInfo); 空白打印(); 私人: TotalInfo m_totalInfo; int m_count; }; 空白myClass: memcopy (int数,TotalInfo信息) { m_count=计数; memcpy(及m_totalInfo及信息,sizeof (m_totalInfo)); } 空白myClass: print () { std:: cout & lt; & lt;m_totalInfo。总& lt; & lt;std:: endl; for (int i=0;我!=m_count;+ + i) { std:: cout & lt; & lt;m_totalInfo.my[我]。id & lt; & lt;std:: endl; std:: cout & lt; & lt;m_totalInfo.my[我]. name & lt; & lt;std:: endl; } } int main () { 这里myClass=myClass (); TotalInfo TotalInfo; memset(和totalInfo 0 sizeof (totalInfo)); char[20]=总“totalInfo.total"; memcpy (totalInfo.total总20); int数=5; for (int i=0;我!=计数;+ + i) { char _id [30]=皌otalInfo.Some.id"; char _name [30]=皌otalInfo.Some.name"; memcpy (totalInfo.my[我]。id、_id sizeof (_id)); memcpy (totalInfo.my[我]. name, _name sizeof (_name)); } 在这里。memcopy(计数,totalInfo); here.print (); 返回0; }
在主要函数的第三行,memset初始化新申请的内存.memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。
一共三个参数,地址,请零(目前做的是清零动作,而不是char型值),地址空间大小。
memcpy也有三个参数,一个目标地址,源地址,和大小。
关于memset与memcpy如何在C语言或c++中使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。