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 }
  • 相关阅读:
    POJ 3276 Face The Right Way
    POJ 3061 Subsequence
    HDU 2104 hide handkerchief
    GCJ Crazy Rows
    HDU 1242 Rescue
    激光炸弹:二维前缀和
    I Hate It:线段树:单点修改+区间查询
    承压计算:模拟+double
    等差素数列:线性筛+枚举
    Period :KMP
  • 原文地址:https://www.cnblogs.com/danielStudy/p/6612784.html
Copyright © 2011-2022 走看看