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* 指针去指向这个地址?这种结构在很多函数库里面比较常见,比如字符串操作函数等,都有类似的现象,这里之所以还要返回这个指针为了实现链式编程,所谓链式编程。

  • 相关阅读:
    更换笔记本电脑记录数据迁移过程
    solaris下的目录ls不到,却能cd进去
    轻松掌握ORACLE 11GR2的RAC实施
    魏公村口腔医院挂号
    springstrutshibernate学习
    oracle RAC启动序列
    HPUX内存监控
    DOM操作 vs. innerHTML
    oracle导入导出技巧
    jQuery幻灯片带缩略图平移滑动焦点图
  • 原文地址:https://www.cnblogs.com/yjds/p/8597335.html
Copyright © 2011-2022 走看看