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标准之后,就开始支持这种弹性数组


  • 相关阅读:
    最近的一些心理活动
    object_c函数多个返回值
    nslayoutConstraint
    判断一些常用的东西
    color 的一些处理
    最近的心理活动
    加载不同的nib文件
    Be a person
    按钮居左显示
    SQLite错误码
  • 原文地址:https://www.cnblogs.com/pangblog/p/3292223.html
Copyright © 2011-2022 走看看