如何找到多维动态数组的元素数

时间:2015-07-22 17:16:13

标签: c++builder

我的指针在头文件中声明:

int (*array)[10];

我将参数传递给初始化数组的函数:

void __fastcall TForm1::Initarray(const int cnt)
{

    try
        {
        Form1->array = new int[cnt][53];
        }
    catch(bad_alloc xa)
        {
        Application->MessageBoxA("Memory allocation error SEL. ", MB_OK);
        }

    Form1->Zeroarray();
    }
    //---------------------------------------------------------------------------

我将数组的所有元素设置为" 0":

    void __fastcall TForm1::Zeroarray()
    {
    __int16  cnt = SIZEOF_ARRAY(array);
    // Here is where I notice the problem. cnt is not correct for the size of the first level of the array. 
    if(cnt)
        {
        for(int n = 0; n < cnt; n++)
            {
            for(int x = 0; x < 53; x++)
                {
                Form1->array[n][x] = 0;
                }
            }
        }
    }
    //---------------------------------------------------------------------------

这是我定义的数组宏大小:

#define SIZEOF_ARRAY(a) (sizeof((a))/sizeof((a[0])));

使用包含53个元素的10个元素array[10][53]创建数组时 我从SIZEOF_ARRAY == 0返回。它应该等于10。

我已经尝试过这个宏的几种变体,只是使用sizeof()进行直接数学运算,但我无法得到正确的输出。   我不做什么?

0 个答案:

没有答案