memset函数

有时我们希望快速地将某个数组的元素全部置为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\n", 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。

posted @ 2021-03-30 20:34  刷书狂魔  阅读(199)  评论(0编辑  收藏  举报
总访问: counter for blog 次