zoukankan      html  css  js  c++  java
  • memset函数的使用

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

    说明:将s中前n个字节 (typedef unsigned int size_t)用 ch 替换并返回 s

    关于memset有几个注意事项:

    1.不能初始化为数值1:

    如果程序的数组a是字符型的,字符型占据内存大小是1Byte,而memset函数也是以字节为单位进行赋值的,所以输出没有问题。

    而如果程序数组a是整型的,使用 memset还是按字节赋值,这样赋值完以后就等于16843009,就完成了对一个INT元素的赋值了。

    所以用memset对非字符型数组赋初值是不可取的!

    memset是以字节为单位就是对array指向的内存的4个字节进行赋值,每个都用ASCⅡ为1的字符去填充,转为二进制后,1就是00000001,占一个字节。一个INT元素是4字节,合一起就是
    00000001000000010000000100000001即16843009。

    2.最后一个参数经常使用sizeof:

    不同的机器上int的大小也可能不同,所以最好用sizeof()

    3.对于结构体初始化:

    例如有一个结构体Some x,可以这样清零:
    memset(&x,0,sizeof(Some));
    如果是一个结构体的数组Some x[10],可以这样:
    memset(x,0,sizeof(Some)*10);

    如果结构体中有数组的话还是需要对数组单独进行初始化处理的.

  • 相关阅读:
    社保系列10《返回值速查表》
    社保系列7《PSAM卡》
    EMVTag系列11《电子现金发卡行授权码》
    EMVTag系列10《发卡行公钥证书》
    EMVTag系列8《IC卡公钥证书》
    EMVTag系列5《8E 持卡人验证方法(CVM)列表》
    康托展开
    A*搜索 概念
    code1225 搭积木
    code1064 虫食算
  • 原文地址:https://www.cnblogs.com/holyprince/p/3598096.html
Copyright © 2011-2022 走看看