函数介绍

  1. 函数原型:memest(void *buffer, int c, int count)
  2. 函数解释:将buffer中当前位置后面的n个字节用c替换并返回s
  3. 三个参数:buffer:为指针或是数组,c:是赋给buffer的值,count:是buffer的长度

函数用法

  1. 将字符数组赋初值
#include<bits/stdc++.h>
using namespace std;
int main(){
    char s[105];
    memset(s,'a',sizeof(s));
    for(int i=0;i<20;i++){
        cout<<s[i]<<" ";
    }
    return 0;
}

  1. 将整型数组赋值-1或0
#include<bits/stdc++.h>
using namespace std;
int main(){
    int s[105];
    memset(s,-1,sizeof(s));
    for(int i=0;i<20;i++){
        cout<<s[i]<<" ";
    }
    return 0;
}

  1. 将布尔型数组赋初值
#include<bits/stdc++.h>
using namespace std;
int main(){
    bool s[105];
    memset(s,1,sizeof(s));
    for(int i=0;i<20;i++){
        cout<<s[i]<<" ";
    }
    return 0;
}

注意事项

memset是以字节为单位赋值,由于字符型和布尔型,每位都是一字节,所以赋值没有问题。

当使用整型数组时,整型每一个变量是四个字节,当赋值为1的时候

转换为二进制是0000 0001,这样属于一个字节,而一个整型四个字节

所以就变成了0x 0101 0101即十进制的16843009

那么,为什么-1就没问题呢,-1转换为二进制就是1000 0001,由于是补码存储,

所以变成了1111 1111,四个字节就变成了0x 1111 1111,翻译成原码即为0x 1000 0001,就是-1。


一只小菜鸡