目录
1.知识回顾
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函数)