• 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的指针。

  • 相关阅读:
    C# 本质论 第三章 操作符和控制流
    LeetCode Online Judge 1. Two Sum
    C# 本质论 第二章 数据类型
    C# 本质论 第一章 C#概述
    TMDS代码
    `define `ifdef `elseif的巧妙使用
    加法器(行波与超前、全加与半加)
    DCI技术
    **标识符
    电容放置问题
  • 原文地址:https://www.cnblogs.com/OSLover/p/3604998.html
Copyright © 2020-2023  润新知