zoukankan      html  css  js  c++  java
  • memset()函数需要注意的问题

    1.使用memset( )函数要带上头文件<cstirng>

    2.看下面几个例子:

    例一:

    cin>>m;
    int **p;
    p=new int*p[m];
    for(int i=0;i<m;i++)
    {
        p[i]=new int[m];
    *1: memset(p,
    0,sizeof(p[i]));
    *2: memset(p,0,m);
    *3: memset(p,0,sizeof(int)*m); }

    例二:

    cin>>m;
    int p[m];
    *1: memset(p,0,sizeof(p));
    *2: memset(p,0,m);
    *3: memset(p,0,sizeof(int)*m);

    例三:

    cin>>m;
    int *p;
    p=new int[m];
    *1: memset(p,0,sizeof(p));
    *2: memset(p,0,m);
    *3: memset(p,0,sizeof(int)*m);

    例一中三种memset()初始化方法中只有*3:是对的,*1:错在p[i]是指针,sizeof()计算的是指针长度而不是数组长度;*2:错在memset()函数第三项数据的单位是字节,申请m个int型数据有m*4个字节,应写成改写m*4。

    例二中三种memset()初始化方法中只有*2:是错的,*1:和上面不同这里是直接定了数组,而不是先声明指针,在动态分配空间,所以sizeof()计算的就是数组的字节数。

    例三中三种memset()初始化方法中只有*3:是对的,*1:,*2:在上面两个都讲了,对比着看一下。

    3.小结

    memset()的几点说明:括号里的第三项是字节,当时数组时可以用sizeof()直接计算,计算出的是数组的总字节数,当定义指针,用指针生成数组,不可用sizeof(),这时计算的是一个指针的字节数,并非数组字节数,可以

    先计算类型字节数乘以申请的数量,比如若申请长度为10的数组,第三项不可以直接写10,应写成40,因为这一项代表字节,十个数乘以整型字节数四即:10*4=40,应写成40;一般memset()函数第二项为0,-1(也可初始化为无穷大,如63)不能是1。

  • 相关阅读:
    聊一聊c++中指针为空的三种写法 ----->NULL, 0, nullptr
    HTML的教程网址
    c++构造函数谁先执行的问题
    从一个模板函数聊聊模板函数里面如何获得T的名字
    sourceInsight的技巧
    【java】实体类中 Set<对象> 按照对象的某个字段对set排序
    hibernate实体xml一对多关系映射
    layer父页面调用子页面的方法
    FreeMarker的<#if></#if>标签
    怎么把myeclipse项目导入IDEA中
  • 原文地址:https://www.cnblogs.com/zwsmile/p/11595059.html
Copyright © 2011-2022 走看看