美文网首页
memset函数

memset函数

作者: 不困于情 | 来源:发表于2017-04-20 12:36 被阅读87次

memset是计算机中C/C++语言函数。
void **memset(void *s, int ch, size_t n);
函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
作用:在一段内存块中填充某个给定的值,它是对较大的结构体数组进行清零操作的一种最快方法。


简单示例1:
如下demo是可以的,能把数组中的元素值都设置成字符1

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    char a[5];
    memset(a,'1',5);
    for(int i=0;i<5;i++)
        cout<<a[i]<<"";
    system("pause");
    return 0;
}

而,如下程序想把数组中的元素值设置成1,却是不可行的

#include <iostream>
#include <cstring>
#include <windows.h>
using namespace std;
int main()
{
    int a[5];
    memset(a,1,20);
 
   
                    //也等价于memset(a,1,sizeof(a));.
    for(int i=0;i<5;i++)
        cout<<a[i]<<"";
    system("pause");
    return 0;
}

问题是:
1.第一个程序为什么可以,而第二个不行?
因为第一个程序的数组a是字符型的,字符型占据内存大小是1Byte,而memset函数也是以字节为单位进行赋值的,所以你输出没有问题。而第二个程序a是整型的,使用 memset还是按字节赋值,这样赋值完以后,每个数组元素的值实际上是0x01010101即十进制的16843009。
如果用memset(a,1,20),就是对a指向的内存的20个字节进行赋值,每个都用数1去填充,转为二进制后,1就是00000001,占一个字节。一个int元素是4字节,合一起是0000 0001,0000 0001,0000 0001,0000 0001,转化成十六进制就是0x01010101,就等于16843009,就完成了对一个int元素的赋值了。

简单示例2:

#include <string.h>
#include <stdio.h>
#include <memory.h>
 
int main(void)
{
    char buffer[]="Helloworld\n";
    printf("Buffer before memset:%s\n",buffer);
    memset(buffer,'*',strlen(buffer));
    printf("Buffer after memset:%s\n",buffer);
    return 0;
}

输出结果:
Buffer before memset:Helloworld
Buffer after memset:***********
(总结来源百度百科)

相关文章

  • iOS 通过HOST获取IP地址和类型

    函数解析 memset() memset()函数原型是extern void *memset(void *buff...

  • Mem系列函数介绍

    函数名称: memset 函数原型: void *memset(void *s, int ch, size...

  • memery

    memset函数 void *memset(void *s, int ch,size_tn); 函数解释:将s中当...

  • C++中memset函数的用法

    memset:char型初始化函数 头文件: 或 函数原型:void *memset(vo...

  • memset的含义及作用

    memset()函数原型是extern void *memset(void *buffer, int c, int...

  • memset的用法总结

    memset()函数原型是extern void *memset(void *buffer, int c, int...

  • 无标题文章

    今天做题卡在MEMSET函数的使用上了,本来以为int a[100]; memset(a, MAX,sizeof(...

  • memset 函数

  • memset函数

    将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地址,块的大小由...

  • memset函数

    memset是计算机中C/C++语言函数。void **memset(void *s, int ch, size_...

网友评论

      本文标题:memset函数

      本文链接:https://www.haomeiwen.com/subject/dnxlzttx.html