C++ memset()函数用法

c++中的memset()函数是初始化函数,作用是将某一块内存中的全部内容设置为指定的值,通常用来给新申请的内存做初始化工作。       //memset是 memory set 的缩写

#include<string.h>
void *memset(*s, ch, n);     //s是内存地址
                             //ch是指定值,将该段内存的所有数值修改为ch
                             //n是内存长度

-----------------------------------------------------------------------------------
//数组(字符串同理)
#include<string.h>
int a[10];
memset(a,0,sizeof(a));
-----------------------------------------------------------------------------------
//结构体
#include<string.h>
struct ST
{
    char a[10];
    int b;
    int c;
};

struct ST st;
memset(&st,0,sizeof(struct ST));

函数介绍

void *memset(void *s, int ch, size_t n);

函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体数组进行清零操作的一种最快方法   。

memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组,c:是赋给buffer的值,count:是buffer的长度.

常见错误

第一:memset函数按字节对内存块进行初始化,所以不能用它将int数组初始化为0和-1之外的其               他值(除非该值高字节和低字节相同)。

第二:memset(void *s, int ch,size_t n);中ch实际范围应该在0~~255,因为该函数只能取ch的后八             位赋值给你所输入的范围的每个字节。

第三: 搞反了 ch 和 n 的位置.

            一定要记住如果要把一个char a[20]清零,一定是 memset(a,0,20*sizeof(char));

           而不是 memset(a,20*sizeof(char),0);


版权声明:本文为m0_51991709原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。