博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
memset的用法
阅读量:7296 次
发布时间:2019-06-30

本文共 994 字,大约阅读时间需要 3 分钟。

1. 头文件

    在C中,<memory.h>或<string.h>

    在C++中,<string>或<cstring>

2. 函数原型

void *memset(void *s, int ch, size_t n);
  *s——初始化的字符串指针

  ch——初始化的内容

  n——初始化内容大小(字节为单位)

3. 用法

    将*s中的所有字符置为ch(ASCII),用于初始化。

(1)对字符串指针进行初始化

char buf[5];memset(buf, 'a', sizeof(buf));for (int i = 0;i < sizeof(buf); i ++){	cout << buf[i] << " ";}
    将buf中的所有内容初始化为'a'。

(2)对非字符串类型指针进行初始化

int buf[5] = {1,2,3,4,5};memset(buf, 0, 5*sizeof(int));for (int i = 0;i < sizeof(buf)/sizeof(int); i ++){	cout << buf[i] << " ";}
    将buf中所有内容初始化为0.

    【注意】下面的初始化方式是不可取的

int buf[5] = {1,2,3,4,5};memset(buf, 1, 5*sizeof(int));for (int i = 0;i < sizeof(buf)/sizeof(int); i ++){	cout << buf[i] << " ";}
    这是因为:每个都用ASCII码为1的内容去填充,用二进制表示就是00000001,占一个字节,一个Int占用四个字节,用二进制表示就是00000001000000010000000100000001,就等于16843009,因此输出全部为16843009,并非预想的1.

    其他类型的初始化还包括结构体等形式:

struct sample{	int a;	char b;};sample s;memset(&s,0, sizeof(sample));
    总之,为了防止出现野指针,新建指针时一定要记得初始化,不用了就要及时销毁。

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/wangicter/archive/2012/03/29/4767368.html

你可能感兴趣的文章
我的友情链接
查看>>
cmd命令行修改windows虚拟内存pagefile.sys
查看>>
我的友情链接
查看>>
九、mysql授权
查看>>
我的友情链接
查看>>
mysql数据库主从同步配置教程--数据库同步
查看>>
java 常见中文乱码问题解决
查看>>
EF 与存储过程
查看>>
分类条件概率
查看>>
(Mirage系列之十)Mirage经典案例之系统恢复
查看>>
【Java 基础篇】【第三课】表达式、控制结构
查看>>
Linux系统密码忘记修改方法
查看>>
项目打包去掉调试时的NSLog、print
查看>>
Linux使用dd命令快速生成大文件
查看>>
php表单时间转换为时间戳-175
查看>>
手机网络制式
查看>>
参加51CTO学院软考培训,我通过啦!
查看>>
对“纯手工编写的第一个Hibernate程序”的改进
查看>>
Solr 5.4.0
查看>>
微信小程序 - 帮你妹
查看>>