void *memset(void *s, int ch, unsigned n);

来源:互联网 发布:电商美工的工作内容 编辑:程序博客网 时间:2024/06/07 00:30
函数原型  void *memset(void *s, int ch, unsigned n); 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。需要的头文件<memory.h> or <string.h> 程序例  #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: ************   编译平台:   Microsoft Visual C++ 6.0   也不一定就是把内容全部设置为ch指定的ASCII值,而且该处的ch可为int或者其他类型,并不一定要是char类型。例如下面这样:   int array[5] = {1,4,3,5,2};   for(int i = 0; i < 5; i++)   cout<<array[i]<<" ";   cout<<endl;   memset(array,0,5*sizeof(int));   for(int k = 0; k < 5; k++)   cout<<array[k]<<" ";   cout<<endl;   输出的结果就是:   1 4 3 5 2   0 0 0 0 0   后面的表大小的参数是以字节为单位,所以,对于int或其他的就并不是都乘默认的1(字符型)了。而且不同的机器上int的大小也可能不同,所以最好用sizeof()。      要注意的是,memset是对字节进行操作,   所以上述程序如果改为   int array[5] = {1,4,3,5,2};   for(int i = 0; i < 5; i++)   cout<<array[i]<<" ";   cout<<endl;   memset(array,1,5*sizeof(int));// 注意 这里与上面的程序不同   for(int k = 0; k < 5; k++)   cout<<array[k]<<" ";   cout<<endl;   输出的结果就是:   1 4 3 5 2   16843009 16843009 16843009 16843009 16843009   为什么呢?   因为memset是以字节为单位就是对array指向的内存的4个字节进行赋值,每个都用ASCII为1的字符去填充,转为二进制后,1就是00000001,占一个字节。一个INT元素是4字节,合一起就是00000001000000010000000100000001,就等于16843009,就完成了对一个INT元素的赋值了。   所以用memset对非字符型数组赋初值是不可取的!   例如有一个结构体Some  x,可以这样清零:   memset( &x, 0, sizeof(Some) );   如果是一个结构体的数组Some x[10],可以这样:   memset( x, 0, sizeof(Some)*10 );
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 c1增驾b2没考过怎么办 没驾照买车怎么办行驶证 广州车辆年审加装踏板怎么办 租车感觉违章了 怎么办 武汉驾照扣12分怎么办 驾驶证照片泡水不清楚怎么办 驾驶证过了180天怎么办 天津有公司执照怎么办落户 温州车在上海年审手续怎么办 广东小高考考了d怎么办 深圳开摩托抓到怎么办 深圳车卖了车牌怎么办 a1驾照时期过了怎么办 b1驾照扣了12分怎么办 北京的驾照换证怎么办 b2汽车驾驶证年审过期几天怎么办 上海驾照到期人在外地怎么办 交警开的罚单交不了怎么办 珠海交警微信交罚单扣分怎么办 驾驶证违法罚款单子没有了怎么办 转账密码输错3次怎么办 汽车违章扣6分怎么办 汽车扣了72分年检怎么办 汽车扣了50分怎么办 汽车扣了15分怎么办 汽车扣了27分怎么办 汽车扣了40分怎么办 行驶证掉了怎么办 异地 高速上没带驾驶证行驶证怎么办 身份证驾驶证行驶证都丢了怎么办 驾驶证年审过期一个月怎么办 柴油车辆年检尾气不合格怎么办 驾驶证过期了5天怎么办 过了审车时间怎么办 骑车没带行驶证怎么办 轿车行驶证丢了怎么办 车子没年检被扣怎么办 上海车辆年检过期了怎么办 行驶证过期十天怎么办 行驶证盖章满了怎么办 驾照c证扣12分怎么办