我有一个很奇怪的问题。我想初始化一个由 void 指针指向的数组,该数组使用 new 分配内存,如下所示。
const int ARRAY_SIZE = 10;
void InitArray()
{
int *ptrInt = new int[ARRAY_SIZE];
for(int i=0; i<ARRAY_SIZE;i++)
{
ptrInt[i] = 1; //OK
}
void *ptrVoid = new int[ARRAY_SIZE];
for(int i=0; i<ARRAY_SIZE;i++)
{
*(int*)ptrVoid[i] = 1; //Culprit : I get a compiler error here
//(error C2036: 'void *' : unknown size)
}
}
现在,我想用 1 初始化 ptrVoid
指向的这个数组的元素。我该怎么做呢?使用此代码,我得到一个编译器错误,如代码所示(我使用的是 VS 2010)。有什么建议吗?
最佳答案
你有一个操作顺序问题(和一个额外的*
)。在你的第二个循环中试试这个:
((int *)ptrVoid)[i] = 1;
关于c++ - 动态数组和空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5399599/