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之外的其               他值(除非该值高字节和低字节相同)。想要初始化其他的值可以用fill()函数。

第二: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);

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
memset函数是C++中的一个函数,用于将一段内存块中的值设置为指定的值。它的原型为void *memset(void *s, int c, size_t n)。其中,s是指向要设置的内存块的指针,c是要设置的值,n是要设置的字节数。 引用\[1\]中提到了memset函数的原型和作用。它可以用来初始化内存,对较大的结构体或数组进行清零操作。该函数通过直接操作内存空间,将指定的值填充到一段内存块中,并返回指向该内存块的指针。 引用\[2\]和引用\[3\]是两个示例代码,展示了如何使用memset函数。在引用\[2\]中,将一个整型数组dp的所有元素都设置为1。而在引用\[3\]中,将数组dp的所有元素都设置为0。这两个示例代码通过调用memset函数来实现对数组的初始化。 综上所述,memset函数是C++中用于初始化内存的函数,可以将一段内存块中的值设置为指定的值。它的使用方法是传入要设置的内存块的指针、要设置的值和要设置的字节数。 #### 引用[.reference_title] - *1* [C++学习——memset函数详解](https://blog.csdn.net/weixin_45525272/article/details/105103995)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [C++中memset函数详解](https://blog.csdn.net/weixin_43790779/article/details/114489612)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值