欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

memset()函数详解

发布时间:2023/12/2 编程问答 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 memset()函数详解 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
1、头文件

    C中为<memory.h> 或 <string.h>

     C++中为<cstring>

2、原型及作用
void *memset(void *s,int c,size_t n)

    其中,s是一个指针或数组,c是赋给s的值,n是将修改的s的长度,即s的前n个字节。

    作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。

3、常用

    常用于清空一个结构体类型的变量或数组,例如清空一个结构体:

struct sample_struct { char csName[16]; int iSeq; int iType; };//对于变量: struct sample_strcut stTest;//一般情况下,清空stTest的方法: stTest.csName[0]='/0'; stTest.iSeq=0; stTest.iType=0;//用memset: memset(&stTest,0,sizeof(struct sample_struct));//如果是数组: struct sample_struct TEST[10];memset(TEST,0,sizeof(struct sample_struct)*10);

   也常用于malloc申请一段内存后,对内存的初始化:

double* wid = (double*)malloc((num+1) *sizeof(double)); if (wid == NULL) { cout << "Fail to allocate memory to wid" << endl; exit(1); } memset(wid, 0, (num + 1) *sizeof(double));//初始化为0
 4、注意

    memset这个函数的作用是将数字以单个字节逐个拷贝的方式放到指定的内存中去

    (1) 若ptr指向char型地址,value可为任意字符值;

    (2) 若ptr指向非char型,如int型地址,要想赋值正确,value的值只能是-1或0,因为-1和0转化成二进制后每一位都是一样的,设int型占4个字节,则-1=0XFFFFFFFF, 0=0X00000000。

参考:赋值过程讲解

   例子详解



总结

以上是生活随笔为你收集整理的memset()函数详解的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。