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);

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

  • 相关阅读:
    mysql执行sql脚本
    Eclipse Memory Analyzer 进行堆转储文件分析
    JAVA字符串格式化-String.format()
    rpm 使用
    md5sum 使用
    Spring Security 初探
    java工厂模式
    Linux 定时任务
    Java Map 知识
    【转】MVC 比较
  • 原文地址:https://www.cnblogs.com/holyprince/p/3598096.html
Copyright © 2011-2022 走看看