有时我们希望快速地将某个数组的元素全部置为0或者其他的某个值,一种方法是使用循环来实现,而C语言string.h
提供了一个更为方便的函数memset
来完成该工作。
memset的定义
void * memset ( void * ptr, int value, size_t num );
示例代码
#include<iostream>
#include<cstring>
using namespace std;
int main(){
int arr[5] = {1, 2, 3, 4, 5};
memset(arr, 0, sizeof(arr));
for(int i = 0; i < 5; i++)
cout << arr[i] << " ";
}
输出结果为:
0 0 0 0 0
注意:
memset函数是逐个字节填充
,即只能将一个整数填充为全0或者全1。而带符号整数在计算机中使用补码表示,因此memset函数只能给数组赋值为全0,或者全-1.
示例代码:
#include<iostream>
#include<cstring>
int main()
{
int a[10];
memset(a, 11, sizeof(a));
printf("%d
", sizeof(a));
for (int i = 0; i < 10; i++){
printf("%d ", a[i]);
}
}
运行结果:
40
185273099 185273099 185273099 185273099 185273099 185273099 185273099 185273099 185273099 185273099
可见,memset函数的作用是将从起始地址开始的长度为num的字节全部以某字节填充,并且只能用于填充0和-1。