zoukankan      html  css  js  c++  java
  • 补充:memset透彻分析

        在c语言中,经常要对内存进行操作,里面涉及到很多函数,但是memeset函数的使用有一点需要大家格外注意,这就是我遇到过的一个问题:

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

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

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

    这些解释,在百度里面都可以看见。这里我要强调一些引起大家重视的关键点。

    1、基本应用场合:memset函数通常用来对一块已经分配地址的内存进行初始化,并且通常初始化为0或者字符“”。

    2、需要注意的几点?

    (1)memset中的第三个参数一定要使用sizeof操作符,因为每个系统下对类型长度的定义可能不一样。

    (2)memeset中的第一个参数一定要是一个已知的,已经被分配的内存的地址,否则会出错。

    (3)大家可能比较疑惑,memeset的第一个参数已经有了被初始化空间的首地址,为什么还要返回一个void* 指针去指向这个地址?这种结构在很多函数库里面比较常见,比如字符串操作函数等,都有类似的现象,这里之所以还要返回这个指针为了实现链式编程,所谓链式编程。

  • 相关阅读:
    react log
    valueOf()、toString()、toLocaleString()三个方法的区别
    git 多账号配置 mac和windows10 记录一下
    js执行顺序,Promise和async中的立即执行
    js事件冒泡及event的target和currentTarget的区别
    canvas 旋转时 中心点的坑
    uni app 在组件中操作 canvas 已踩坑
    js 预编译原理
    mixins 在装饰器 vue-property-decorator 中的使用
    js 面向对象和函数式编程
  • 原文地址:https://www.cnblogs.com/yjds/p/8597335.html
Copyright © 2011-2022 走看看