zoukankan      html  css  js  c++  java
  • mem系函数总结

    memset();

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

    含义:   将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作;

               其返回值为指向S的指针。

    注意:   其是按照字节顺序(大小为n字节)进行赋值的,跟具体类型无关;

    int num[8];

    我们用memset给num初始化为{1,1,1,1,1,1,1,1},memset(num,1,8);//这样是不对的

    错误点1:一个int是4个字节的,8个int是32个字节,所以首先要赋值的长度就不应该为8而是32。

    错误点2:因为memset是 逐字节 拷贝,以num为首地址的8字节空间都被赋值为1,即一个int变为0X00000001 00000001 00000001 00000001,显然,把这个数化为十进制不会等于1的。

    所以,在memset使用时要千万小心,在给char以外的数组赋值时,最好只用来初始化为0(0x00)。

    memcpy();

    原型:   void *memcpy( void *dest, const void *src, size_t n );

    含义:   从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中

    1.source和destin所指内存区域不能重叠,函数返回指向destin的指针。

  • 相关阅读:
    vue-cli3 set vue.config.js
    oracle 基本查询语句及实例
    输出流啊输入流
    java线程
    sql基础
    抽象类和接口
    重载和重写的区别
    简单的java面向对象计算器
    运算符的优先级
    隐式类型转换规则
  • 原文地址:https://www.cnblogs.com/OSLover/p/3604998.html
Copyright © 2011-2022 走看看