CC8.【C++ Cont】使用memset和memcpy来设置数组

目录

1.知识回顾

2.memset函数使用

示例1

运行结果

示例2

运行结果

练习1

分析

运行结果

memset设置二维数组

 3.memcpy函数使用


1.知识回顾

60.【C语言】内存函数(memset,memcmp函数)

58.【C语言】内存函数(memcpy函数)

2.memset函数使用

C++中使用前需要<cstring>头文件

memset可以批量设置数组元素的值,不用像写循环那样对元素一个一个设置

注意:memset是以字节为单位设置的

示例1

如将arr整个数组以字符0填充

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
	char arr[] = "Hello World!";
	cout<<arr<<endl;
	char* ptr = (char*)memset(arr,'0',sizeof(arr)/sizeof(arr[0])*sizeof(char));
	cout<<arr;
	return 0;
}

注意:sizeof(arr)/sizeof(arr[0])*sizeof(char)-->元素个数*每个元素所占的字节

也可以直接写成sizeof(arr)

运行结果

示例2

如将int类型的数组全部以数字0填充

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
	int arr[] = {1,2,3,4,5,6,7,8,9,0};
	for (auto a:arr)
	{
		cout<<a<<' ';
	}
	cout<<'\n';
	int* ptr = (int*)memset(arr,0,sizeof(arr)/sizeof(arr[0])*sizeof(int));
	for (auto a:arr)
	{
		cout<<a<<' ';
	}
	return 0;
}

运行结果

练习1

将示例2的int* ptr = (int*)memset(arr,0,sizeof(arr)/sizeof(arr[0])*sizeof(int));中的0改为2,求执行结果

分析

memset是以字节为单位设置的,不是以元素为单位设置的,而int类型打印每4个字节算一个数

因此自字节数组02 02 02 02被解释为一个数,计算器计算得:十进制3686018,为打印的结果

运行结果

memset设置二维数组

#include <iostream>
#include <cstring>
using namespace std; 
int main()
{
	int arr[3][5];
	memset(arr,1,sizeof(arr));
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			cout << arr[i][j] << " ";
		}
		cout << endl;
	}
	return 0;
} 

memset(arr,1,sizeof(arr));也可以写成memset(arr,1,3*5*sizeof(int));

 3.memcpy函数使用

C++中使用前需要<cstring>头文件

注意memcpy函数以字节为单位复制,其余内容见58.【C语言】内存函数(memcpy函数)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangcoder

赠人玫瑰手有余香,感谢支持~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值