zoukankan      html  css  js  c++  java
  • memset为int型数组初始化问题

    头文件:#include <string.h>
    memset() 函数用来将指定内存的前n个字节设置为特定的值,其原型为:
        void * memset( void * ptr, int value, size_t num );
    参数说明:

    • ptr 为要操作的内存的指针。
    • value 为要设置的值。你既可以向 value 传递 int 类型的值,也可以传递 char 类型的值,int 和 char 可以根据 ASCII 码相互转换。
    • num 为 ptr 的前 num 个字节,size_t 就是unsigned int。

    【函数说明】memset() 会将 ptr 所指的内存区域的前 num 个字节的值都设置为 value,然后返回指向 ptr 的指针。

    无法下面这样初始化,这样的结果是a被赋值成168430090,168430090.。。。。。。。。。

    int a[10];
    memset(a, 1, sizeof(a));

    这是因为int由4个字节(说)表示,并且不能得到数组a中整数的期望值。
    但我经常看到程序员使用memset将int数组元素设置为0或-1。

    int a[10];
    int b[10];
    memset(a, 0, sizeof(a));  
    memset(b, -1, sizeof(b));
    //假设a为int型数组:
    memset(a,0x7f,sizeof(a));
    //a数组每个空间将被初始化为0x7f7f7f7f,原因是C函数传参过程中的指针降级,导致sizeof(a),返回的是一个 something*指针类型大小的的字节数,如果是32位,就是4字节。所以memset按字节赋值。
    memset(a,0xaf,sizeof(a));
    //a数组每个空间将被初始化为0xafafafaf


  • 相关阅读:
    java 中的Debug eclipse 开发工具使用
    google 浏览器的Debug 调试工具使用
    java 实现word 转 pdf
    你好啊 未来的自己
    java 实现在线阅读 .pdf
    java 的在线下载文件 .pdf
    Java 实现手机发送短信验证码
    Java 实现发送邮件
    Java 实现邮件的发送
    沃尔沃投资两家以色列科技创企 布局人工智能
  • 原文地址:https://www.cnblogs.com/jiangxin/p/11775763.html
Copyright © 2011-2022 走看看