zoukankan      html  css  js  c++  java
  • memset函数

    前段时间学习了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或者字符'',举例说明
     1 //1,对字符数组进行初始化
     2 int main(){
     3     char buf[10];//创建一个字符数组 
     4     memset(buf,'0',sizeof(char)*10);//将buf指向的空间的前10个字节初始化为字符''
     5     for(int i = 0;i < 10;i++){
     6         cout << buf[i] << endl;  
     7     }
     8     cout << endl;
     9     return 0;
    10 }
    11 //结果应该是10个0
    12 0
    13 0
    14 0
    15 0
    16 0
    17 0
    18 0
    19 0
    20 0
    21 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 }
  • 相关阅读:
    复制延迟排查
    [学习笔记]贪心
    主从复制延时判断以及脚本
    [学习笔记]尺取法
    RESET MASTER 和RESET SLAVE 命令的使用方法 注意事项
    女神(goddess)——组合数学
    主从同步设置的重要参数log_slave_updates
    埃及分数&&The Rotation Game&&骑士精神——IDA*
    多源复制开关复制命令和监控
    万圣节后的早晨&&九数码游戏——双向广搜
  • 原文地址:https://www.cnblogs.com/danielStudy/p/6612784.html
Copyright © 2011-2022 走看看