memset()函数使用详解


一、memset函数原型

void *memset(void *src, int value, size_t n);

这里srs可以是数组名,也可以是指向某一内存空间的指针;
value为要填充的值;
n为要填充的字节数,通常为sizeof(s);
函数的功能:将指针变量 src 所指向的前 n 字节的内存单元用一个“整数” value 替换,注意 value是 int 型。src 是 void* 型的指针变量,所以它可以为任何类型的数据进行初始化。

二、使用步骤

1.加入头文件和命名空间

代码如下(示例):


#include <string.h>
using namespace std;

2.数组初始化

代码如下(示例):

    char str[20];
    char *pt = str;
    memset(pt, 0, sizeof(str));  //将str数组初始化为0

3.自定义类初始化

我们自定义的类或者结构体中,通常会定义 int,char,double等 内置型变量,在构造函数中一句句的将他们初始化为0显得很麻烦,所以可以直接memset(this, 0, sizeof *this);将整个对象的内存全部置为 0。对于这种情形可以很好的工作,但是下面几种情形是不可以这么使用的:

1.类含有虚函数表:将破坏虚函数表,后续调用虚函数时将出现异常;
2. 类中含有 C++类型的对象:例如,类中定义了一个 vector 的对象,因为在构造函数体的代码执行之前就对 vector 对象完成了初始化,假设 vector 在它的构造函数里分配了内存,那么我们这么一做就破坏了 vector 对象的内存。

代码如下(示例):

	memset(this,0,sizeof(*this))
  • 2
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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 ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值