我的指针在头文件中声明:
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()
进行直接数学运算,但我无法得到正确的输出。
我不做什么?