zoukankan      html  css  js  c++  java
  • c++给数组整体赋初值

    1.memset

    memset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。

    头文件:

    #include<cstring>

    memset()函数原型extern void *memset(void *buffer, int c, int count)    buffer:为指针或是数组;   c:是赋给buffer的值;   count:是buffer的长度。

    c的取值范围应该在0~~255,因为该函数只取ch的后八位赋值给你所输入的范围的每个字节。

    比如int a[5]赋值memset(a,-1,sizeof(int )*5)与memset(a,511,sizeof(int )*5) 所赋值的结果是一样的都为-1;因为-1的二进制码为(11111111 11111111 11111111 11111111)而511的二进制码为(00000000 00000000 00000001 11111111)后八位都为(11111111),所以数组中每个字节,如a[0]含四个字节都被赋值为(11111111),其结果为a[0](11111111 11111111 11111111 11111111),即a[0]=-1,因此无论ch多大只有后八位二进制有效,而后八位二进制的范围在(0~255)中改。

    使用方法:memset函数按字节对内存块进行初始化,所以不能用它将int数组初始化为0和-1之外的其他值(除非该值高字节和低字节相同)。

    int q[100];

    (1)赋值为-1

    memset(q,-1,sizeof(q))和memset(q,255,sizeof(q))以及memset(q,0xff,sizeof(q));是等价的,都是给q数组赋值-1.

    (2)赋值为0

    memset(q,0,sizeof(q))

    (3)赋其它值

    memset(q,-127,sizeof(q));和memset(q,0x81,sizeof(q))是等价的,赋值后q[1]=-2122219135

    原理:-127转换成二进制为111111111(原码),它的补码10000001,填充int的4个字节为10000001 10000001 10000001 10000001,

    而10000001 10000001 10000001 10000001的原码为:11111110 01111110 01111110 01111111(最高位的1是符号位)

     2.fill

    fill(q,q+3,5);//给q数组的q[0],q[1],q[2]赋值为5

    头文件:#include<algorithm>

    格式:fill(初始位置first,最终位置last,值)      //填充范围为[first,last)

     (备注:fill大家在竞赛中使用较少,原因不详,据说是速度太慢。)

    (无关内容:long long在考试中如果使用printf输出,则可以用LLd控制)

  • 相关阅读:
    Shell 脚本中调用另一个 Shell 脚本的三种方式
    Shell脚本的三种执行方式
    python selenium中Excel数据维护(二)
    python里面的xlrd模块详解(一)
    selenium处理iframe定位于切换问题解决办法
    Selenium在定位的class含有空格的复合类的解决办法整理
    SqlSugar ORM已经支持读写分离
    ASP.NET Core的Kestrel服务器
    服务是如何加载并运行的, Kestrel、配置与环境
    ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解
  • 原文地址:https://www.cnblogs.com/ssfzmfy/p/10697001.html
Copyright © 2011-2022 走看看