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

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

前段时间学习了malloc函数和calloc函数,两个函数最大的区别就是malloc在申请完空间之后并不会对其进行初始化,那么就没有手动初始化的方法了么?接下来就学习一下memset函数

memset函数:

  • 函数原型:void* memset(void *s , int ch , size_t n);
  • 函数说明:将指针s所指向的内存空间的前n个字节的内容全部设置为ch指定的ASCII码,s为需要被初始化的内存地址,块的大小由第三个参数指定,该函数通常为新申请的内存做初始化工作
  • 返回值:返回值为指向s的指针
  • 头文件:<string.h>或者<memory.h>
  • 一般应用:
    • 通常用来对一块已经分配地址的内存进行初始化,并且通常初始化为0或者字符'\0',举例说明
1 //1,对字符数组进行初始化 2 int main(){ 3     char buf[10];//创建一个字符数组  4     memset(buf,'0',sizeof(char)*10);//将buf指向的空间的前10个字节初始化为字符'\0' 5     for(int i = 0;i < 10;i++){ 6         cout << buf[i] << endl;   7     } 8     cout << endl; 9     return 0;10 }11 //结果应该是10个012 013 014 015 016 017 018 019 020 021 0
  • 对使用malloc函数申请的内存空间进行初始化
1 int main(){ 2     char *ptr = (char*) malloc(sizeof(char)*10); 3     if(ptr != NULL){ 4         memset(ptr,'0',sizeof(char)*10); 5         for(int i=0;i<10;i++){ 6             cout << ptr[i] << endl; 7         } 8     free[ptr]; 9     ptr = NULL;10 11     return 0;12 }//结果和上面的一样,是10个0
  • 对整型数组进行初始化
1 int main(){2     int in[10];3     memset(in,0,sizeof(int)*10);4     for(int i=0;i<10;i++){5         cout << in[i] << endl;6     }7     return 0;8 }

 

转载于:https://www.cnblogs.com/danielStudy/p/6612784.html

你可能感兴趣的文章
03 线程池
查看>>
201771010125王瑜《面向对象程序设计(Java)》第十三周学习总结
查看>>
手机验证码执行流程
查看>>
python 基础 ----- 变量
查看>>
设计模式课程 设计模式精讲 2-2 UML类图讲解
查看>>
Silverlight 的菜单控件。(不是 Toolkit的)
查看>>
:hover 鼠标同时触发两个元素变化
查看>>
go语言学习十三 - 相等性
查看>>
Idea 提交代码到码云(提交到github也大同小异)
查看>>
c#连接excel2007未安装ISAM解决
查看>>
Mono 异步加载数据更新主线程
查看>>
初识lua
查看>>
我是插件狂人,jDuang,jValidator,jModal,jGallery
查看>>
张季跃 201771010139《面向对象程序设计(java)》第四周学习总结
查看>>
如何解除循环引用
查看>>
android中fragment的使用及与activity之间的通信
查看>>
字典【Tire 模板】
查看>>
jquery的contains方法
查看>>
python3--算法基础:二分查找/折半查找
查看>>
Perl IO:随机读写文件
查看>>