zoukankan      html  css  js  c++  java
  • 结构体/类中的弹性数组---元素个数为0的数组

    弹性数组存在于形如下面的结构体:

    class CZeroTest
    {
    public:
    	int nCnt;
    	int items[];
    };


    CZeroTest中的 int items[]即为该类的弹性数组,也可定义为 int items[0],可以发现sizeof(CZeroTest)为4,即弹性数组的大小为0,不占用空间。

    之所以称为弹性数组,是因为给该类型的指针可以通过malloc或者new的方式给其数组分配一定的空间,如:

    CZeroTest *ztOb;
    ztOb = (CZeroTest *)malloc(sizeof(CZeroTest) + 50 * sizeof(int));   //C语言方式
    ztOb = (CZeroTest *)new char(sizeof(CZeroTest) + 50 * sizeof(int)); //C++语言方式


    上面代码则给ztOb对象中的弹性数组分配了50个int型空间的大小。items的空间地址在nCnt空间地址的后面。

    弹性数组的释放:

    free(ztOb);    //C语言方式
    delete []ztOb; //C++语言方式


    从C99标准之后,就开始支持这种弹性数组


  • 相关阅读:
    c函数调用过程
    查找匹配行及前后5行
    指向类成员函数的指针
    C++箴言:理解typename的两个含义
    不定参数
    定时器
    unix编译
    sed
    大脑皮层的梦工厂
    静态链接库顺序问题
  • 原文地址:https://www.cnblogs.com/pangblog/p/3292223.html
Copyright © 2011-2022 走看看