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

     

    可参考:

    C++中memset函数的用法  

    C++中memset函数的用法

    C++中memset()函数的用法详解

    c/c++学习系列之memset()函数

    透彻分析C/C++中memset函数

     

    memset()是char型初始化函数。

    一. 头文件:<string.h> 或 <memory.h>

    二. 函数原型:void *memset(void *s, int ch, size_t n);

    函数功能:将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针,它是对较大的结构体或数组进行清零操作的一种最快方法。

    三. 使用

    memset(结构体/数组名 , 用于替换的ASCII码对应字符 , 前n个字符 );

    memset(结构体/数组名 , "用于替换的字符“ , 前n个字符 );

    函数解释:将s中的前n个字节用ch替换并且返回s

    函数作用:在一段内存块中填充某一个给定的值,常用于较大的对结构体和数组的清零操作。

    例子1:

    #include<iostream>
    //#include"string.h"
    using namespace std;
    int main()
    {
        char str[10];
        str[9] = 'w';
        memset(str,97,9);
        for(int i=0;i<10;i++){
            cout<<str[i]<<" ";
        }
        return 0;
    } 

    输出:a a a a a a a a a w

    说明:使用memset似乎不需要使用额外的头文件。

    例子2:

    #include<iostream>
    //#include"string.h"
    using namespace std;
    int main()
    {
        char str[10];
        str[9] = 'w';
        memset(str,97,sizeof(char)*10);
        for(int i=0;i<10;i++){
            cout<<str[i]<<" ";
        }
        return 0;
    } 

    输出:a a a a a a a a a a

    例子3:

    #include<iostream>
    using namespace std;
    int main()
    {
        char str[10];
        memset(str,65,sizeof(str)-3);
        for(int i=0;i<10;i++){
            cout<<str[i]<<" ";
        } 
        return 0;
    }

    输出:A A A A A A A 

     

    四. 几个注意事项转自此文 (讲解详细,可多看几遍)

    1.memset是以字节为单位,初始化内存块。

    2.当结构体类型中包含指针时,在使用memset初始化时需要小心。

    3.当结构体或类的本身或其基类中存在虚函数时,也需要谨慎使用memset。(笔试中碰到过类似的题,貌似是找错)

     

  • 相关阅读:
    iOS多图上传
    iOS强制横屏
    pod导入融云路径报错解决办法
    iOS 制作一个动态库
    iOS ProtocolBuffer使用介绍
    iOS 静态库与动态库的区别
    pod命令创建私有库详解【引用其他私有库、oc、Swift混编】
    M1 安装homebrew详解
    M1 执行pod install 报错
    iOS 消息转发机制
  • 原文地址:https://www.cnblogs.com/Tang-tangt/p/9342103.html
Copyright © 2011-2022 走看看