您的位置:首页 > 编程语言 > C语言/C++

C语言中memset函数详解

2016-02-26 22:35 886 查看
因为memset是以字节为单位就是对array指向的内存的4个字节进行赋值,字节,合一起就是

就等于16843009,就完成了对一个INT元素的赋值了。
所以用memset对非字符型数组赋初值是不可取的!除非赋值是0.

功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,

  块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作

  用 法: void *memset(void *s, char ch, unsigned n);

  程序例:

  #include <string.h>

  #include <stdio.h>

  #include <memory.h>

  int main(void)

  {

  char buffer[] = "Hello world/n";

  printf("Buffer before memset: %s/n", buffer);

  memset(buffer, '*', strlen(buffer) );

  printf("Buffer after memset: %s/n", buffer);

  return 0;

  }

  输出结果:

  Buffer before memset: Hello world

  Buffer after memset: ***********

如果是初始化,只要定义第一个元素为0,后面就全为0了,如

int a[SIZE] = {0};

如果是在定义以后想全部赋为0,用memset()函数是比较快的。

如:

int a[SIZE];

memset(a, 0, sizeof(int)*SIZE);

补充:某人的一点心得

  memset可以方便的清空一个结构类型的变量或数组。

  如:

  struct sample_struct

  {

  char csName[16];

  int iSeq;

  int iType;

  };

  对于变量

  struct sample_strcut stTest;

  一般情况下,清空stTest的方法:

  stTest.csName[0]='/0';

  stTest.iSeq=0;

  stTest.iType=0;

  用memset就非常方便:

  memset(&stTest,0,sizeof(struct sample_struct));

  如果是数组:

  struct sample_struct TEST[10];

  则

  memset(TEST,0,sizeof(struct sample_struct)*10);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: