C+中的结构数组+;(Rad Studio 10.1-Android应用程序) 我通常在C++的Windows中使用Stult数组,内存分别通过构造函数和析构函数中的Nead和Delphi分配。
这是我的第一个安卓应用 自从我将第一个数组从简单数组更改为 在头文件中定义为float AccelZ[1000] 用作AccelZ[i] 指向头文件中定义的结构数组,并在FormCreate和FormDestroy事件中使用new和delete。 并用作加速阵列[i]->Z Android中没有使用结构数组吗?但如果是这样的话,那么我会预料到一个编译错误 谢谢 现在编辑示例: 在头文件中:C+中的结构数组+;(Rad Studio 10.1-Android应用程序) 我通常在C++的Windows中使用Stult数组,内存分别通过构造函数和析构函数中的Nead和Delphi分配。,android,arrays,c++builder,Android,Arrays,C++builder,这是我的第一个安卓应用 自从我将第一个数组从简单数组更改为 在头文件中定义为float AccelZ[1000] 用作AccelZ[i] 指向头文件中定义的结构数组,并在FormCreate和FormDestroy事件中使用new和delete。 并用作加速阵列[i]->Z Android中没有使用结构数组吗?但如果是这样的话,那么我会预料到一个编译错误 谢谢 现在编辑示例: 在头文件中: const int MAXTIMESTEPS = 20000; struct Acceleration
const int MAXTIMESTEPS = 20000;
struct AccelerationRecord
{
float Z;
};
在公开场合:
AccelerationRecord* Acceleration[MAXTIMESTEPS];
在Windows中FormCreate下的.cpp文件中,我会将其放入构造函数中,但这对于Android应用程序不起作用(我不熟悉Android应用程序)
首先:
for (int i; i < MAXTIMESTEPS; i++)
我看不到绑定检查,也看不到init,所以上帝知道计数器的值是多少
其次,我更习惯于这样:
// "globals"
const int MAXTIMESTEPS = 20000;
struct AccelerationRecord
{
float Z;
};
AccelerationRecord* Acceleration=NULL;
// init
Acceleration = new AccelerationRecord[MAXTIMESTEPS];
// here do your stuff on AccelerationRecord[i]
AccelerationRecord[7].z=-1.5;
// exit
delete[] Acceleration;
单new/delete[]
比为每条记录调用它要好得多,原因有二。首先,你要少的内存管理器(开销少),第二种方法是你得到连续内存块,只记得相同的东西的单指针,而不是代码> 20000代码/代码>使用更少的内存,更快和线性的访问……< /p> C++中的结构和数组在Android上与在任何其他平台上的工作完全一样。您遇到的任何错误通常都是由于您误用它们造成的。
if (MotionSensor1->Sensor-
>AvailableProperties.Contains(TCustomMotionSensor::TProperty::AccelerationZ))
{
lbAccelerationZ->Text = lbAccelerationZ->Text.sprintf(L"Acceleration Z: %6.2f",MotionSensor1->Sensor->AccelerationZ+1);
Counter += 1;
Acceleration[Counter]->Z = MotionSensor1->Sensor->AccelerationZ+1;
//crashes at this line in debug mode
>> snip other code
}
for (int i; i < MAXTIMESTEPS; i++)
for (int i=0; i < MAXTIMESTEPS; i++)
Counter += 1;
// "globals"
const int MAXTIMESTEPS = 20000;
struct AccelerationRecord
{
float Z;
};
AccelerationRecord* Acceleration=NULL;
// init
Acceleration = new AccelerationRecord[MAXTIMESTEPS];
// here do your stuff on AccelerationRecord[i]
AccelerationRecord[7].z=-1.5;
// exit
delete[] Acceleration;