C++中memset函数详解

  1. memset函数定义于<string.h>头文件中。
    函数原型:
void *memset(void *s,int c,unsigned long n);

函数功能:为指针变量s所指的前n个字节的内存单元填充给定的int型数值c,它可以为任何数据进行初始化。换句话说,就是将数值c以单个字节逐个拷贝的方式放到指针变量s所指的内存中去。 注意:只将数值c的最低一个字节填充到内存。

  1. 示例:
    (1)当c=-1时
#include <iostream>
#include <string.h>
using namespace std;

int main()
{
    
    
    int dp[3];
    memset(dp,-1,sizeof(dp));

    for(int i=0;i<3;i++)
        cout << dp[i] << " ";

    return 0;
}

因为-1在计算机中存储为:1111 1111,故dp数组中每一个int值为“1111 1111 1111 1111 1111 1111 1111 1111”,是十进制下的-1。
输出结果:-1 -1 -1

(2)当c=0时

#include <iostream>
#include <string.h>
using namespace std;

int main()
{
    
    
    int dp[3];
    memset(dp,0,sizeof(dp));

    for(int i=0;i<3;i++)
        cout << dp[i] << " ";

    return 0;
}

因为0在计算机中存储为:0000 0000,故dp数组中每一个int值为“0000 0000 0000 0000 0000 0000 0000 0000”,是十进制下的0。
输出结果:0 0 0

(3)当c=1时

#include <iostream>
#include <string.h>
using namespace std;

int main()
{
    
    
    int dp[3];
    memset(dp,1,sizeof(dp));

    for(int i=0;i<3;i++)
        cout << dp[i] << " ";

    return 0;
}

因为-1在计算机中存储为:0000 0001,故dp数组中每一个int值为“0000 0001 0000 0001 0000 0001 0000 0001”,是十进制下的16843009。
输出结果:16843009 16843009 16843009

(4)当c=268时

#include <iostream>
#include <string.h>
using namespace std;

int main()
{
    
    
    int dp[3];
    memset(dp,268,sizeof(dp));

    for(int i=0;i<3;i++)
        cout << dp[i] << " ";

    return 0;
}

因为-1在计算机中存储为: 0001 0000 1100,故dp数组中每一个int值为“0000 1100 0000 1100 0000 1100 0000 1100”,是十进制下的202116108。
输出结果:202116108 202116108 202116108

Guess you like

Origin blog.csdn.net/weixin_43790779/article/details/114489612