C++中memset函数的基本用法

一、memset()函数介绍

  memset是将你指定范围的每一个字节设定为你指定的一个二进制值(在指定二进制时,以十进制的方式输入),在使用时要包含头文件#include<cstring>

原型`void* memset(void* ptr, int value, size_t num);`
·  ptr:指向要设置数值的内存起始位置的指针。
·  value:要设置的无符号字符值(通常是 unsigned char 类型的)。
·  num:要设置的字节数。

二、如何使用memset

例如:想要将一个字符数组中的字符全设为a。

char c[10];
memset(c, 97, sizeof(c));
for (int i = 0; i < 10; ++i)
{
	cout << c[i] << " ";
}

输出结果:

a a a a a a a a a a

  97对应的二进制是0110 0001,memset将c的每一个字节都设为了0110 0001,而97(0110 0001)对应的字符为a,所以c中的元素输出出来都是a。
  所以在设置字符串时,想要设置成什么字符,只要在vaule处填写对应ascll码值即可。
注意:在设置整形时一般只能设置成0或者-1。
例如:如果你想要用memset设置int的值为1,此时如果你写下下面这段代码

int a[10];
	memset(a, 1, sizeof(a));
	for (int i = 0; i < 10; ++i)
	{
		cout << a[i] << " ";
	}
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009

  输出结果并不是想要的1而是16843009。
  这是因为1对应的二进制是0000 0001 ,int占四个字节,每个字节都被填充为0000 0001,则数组中的每一个数被设置为0000 0001 0000 0001 0000 0001 0000 0001,这个数对应的十进制值为16843009
  所以memset在设置整形时只能设置为0或-1。

三、memset在二维数组中的用法

  memset在设置二维数组时用法同样如此

int a[10][10];
	memset(a, 0, sizeof(a));
	for (int i = 0; i < 10; ++i)
	{
		for (int j = 0; j < 10; ++j)
		{
			cout << a[i][j] << " ";
		}
		cout << endl;
	}

运行结果:

0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0

总结

  总结:在设置字符串时,想要设置成什么字符,只要在vaule处填写对应ascll码值,ptr出填写首地址,num填写想要设置的字节数即可。
  但在设置整形时则一般只能设置为0或-1否则设置出来的值不可控。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值