最新消息:点击查看大S的省钱秘笈

使用memset函数初始化数组

编程相关 Slyar 12600浏览 5评论

文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

初级介绍,大牛请飘过。。。

在初始化数组尤其是需要每次都初始化的时候,很多同学使用循环来进行,这样不但速度慢,而且写起来也很长。所以现在提供一个函数来实现这个功能。。。

原型:extern void *memset(void *buffer, int c, int count);

功能:把buffer所指内存区域的前count个字节设置成字符c。

包含头文件:<string.h>

注意这个函数是字符串函数,所以一定要包含字符串头文件。

使用方法:

int a[50];

memset(a,0,sizeof(a));

这样呢,就将数组a内所有的值都赋成0了,sizeof是一个一元操作符,得到数组a的字节大小。

另外需要注意的是,memset函数是逐字节进行填充,所以a一般为char *型。对于其它类型的a,可以填充的值有两个,0和-1。因为计算机中用二进制补码表示数字,0和二进制补码为全0,-1的二进制补码为全1。

转载请注明:Slyar Home » 使用memset函数初始化数组

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (5)

  1. 那个。。。sizeof是一元操作符,不是函数。。。
    Shanicky_C10年前(2013-09-14)回复
  2. memset(a,0,sizeof(int)*sizeof(a));
    Sai11年前(2012-01-09)回复
  3. int a[50]; memset(a,0,sizeof(a)); INT类型好像没法用memset初始化吧,char类型倒是可以。我是在gcc下试验的。
    zys13年前(2010-07-02)回复
  4. 在做ACM题的时候我一般还是手写for(i=0;i<n;a[i]=0, ++i);
    felix02115年前(2008-11-19)回复
    • 恩,其实我也不喜欢函数...
      Slyar15年前(2008-11-20)回复