侧边栏壁纸
  • 累计撰写 192 篇文章
  • 累计创建 2 个标签
  • 累计收到 87 条评论

【C++基础语法】memset、fill 用法

Allen Best
2024-07-04 / 0 评论 / 1 点赞 / 23 阅读 / 1,111 字
温馨提示:
本文最后更新于 2024-07-04,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

memset() 是一个 C 语言中的库函数,用于将指定的内存块设置为指定的值。要在 C 代码中使用 memset() 函数,你需要包含 <string.h> 或 头文件。
它通常用于对数组、结构体或其它内存块进行初始化或清零操作。
函数原型
void *memset(void *ptr, int value, size_t num);
参数
ptr:指向要设置值的内存块的指针。
value:要设置的值。value 和 ptr 指向的内存块的类型应兼容。一般情况下,可以使用整数或字符值作为 value。
num:要设置的字节数(或元素个数)。通常使用 sizeof() 运算符来确定要设置的字节数或元素个数。
用途
memset() 函数的主要功能是将指定的内存块的每个字节设置为给定的值。
对数组进行清零

int myArray[10]; 
memset(myArray, 0, sizeof(myArray));

对结构体进行初始化

typedef struct 
{ 
    int id; 
    char name[20]; 
    float salary; 
} Employee; 
Employee emp; 
memset(&emp, 0, sizeof(Employee));

设置特定的值

char buffer[100]; 
memset(buffer, 'A', sizeof(buffer));

这个示例展示了如何使用 memset() 函数将一个字符数组 buffer 的所有元素设置为字符 'A'。我们使用 sizeof() 运算符确定数组的大小,并将其作为 num 参数传递给 memset() 函数。
由于 memset() 函数是按字节进行复制的,因此赋值int 或者 longlong 类型要注意。
普通数组我们只需要学习两个初始值就可以了,一个是0,一个是0x3f

0: 0是最简单的了,就是把全部字节都置零,那么无论是int还是long long都可以全部初始化为0了

0x3f: 0x指的是十六进制的意思,说明 3f 是一个十六进制数
总的来说,我们需要初始化为 0 的时候就用 0,需要初始化为最大值的时候就用0x3f
fill()函数
fill函数是C++标准库中的一个算法函数,用于将指定范围内的元素赋值为给定的值。

fill( first, last, value );

三个参数:

first:表示要填充的范围的起始迭代器(表示开始位置),指向要填充的第一个元素。
last:表示要填充的范围的结束迭代器(表示结束位置的下一个),指向要填充的最后一个元素的下一个位置。
value:表示要赋给范围内的每个元素的值。
函数功能
fill函数会将范围 [ first, last ) 内的每个元素都设置为 value。
first,last 均表示数组或对象的下标。

fill(arr, arr + 5, 0);
0

评论区