分享

memset和fill

 Linux学习模式 2014-11-02

memset和fill_n比較

1.memset是对每个字节赋值,而int有4字节(32位)
比如这样,memset(a,1,sizeof(a));
则a中的每个元素都被赋值成为2进制数为,00000001000000010000000100000001,的数
转换成10进制就是16843009
所以,一般用memset对数组赋0或-1,赋其他的值就要用循环来实现.

 

函数名: memset

//要包含头文件<string.h>
功 能: 设置s中的所有字节为ch, s数组的大小由n给定
用 法: void *memset(void *s, char ch, unsigned n);
程序例:

#include <string.h>
#include <stdio.h>
#include <mem.h>

int main(void)
{
char buffer[] = "Hello world/n";

printf("Buffer before memset: %s/n", buffer);
memset(buffer, '*', strlen(buffer) - 1);
printf("Buffer after memset: %s/n", buffer);
return 0;
}
注意它的用法,不一定是赋为0,其实就是把一个数组的每个单元写上ch,说明了就是写上一个数.

 

       对于对int之类的数组,只能用memset对其初始化为0或-1。

        如:int a[]; memset(a,0,sizeof(a)): //sizof(a)=sizeof(int)*n;

        而对于char型,可以赋任何字符。

        如:char a[]; memset(a,'0',sizeof(a));//sizeof(a)=1*n;

 

2,fill_n(void *s,unsigned n,char n)

  //要包含头文件 <iostream>

  与memset的不同不仅在于函数参数的顺序,而且对int型的数组赋值,fil_n可以赋任何值,而memset只能赋0或-1.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多