c++ - 动态数组和空指针

标签 c++ new-operator void

我有一个很奇怪的问题。我想初始化一个由 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/

相关文章:

c++ - 添加新库时出现重复符号错误

c++ - 我可以用 new 分配一 block 内存吗?

java - Java Void 引用类型的用途?

c++ - 检测堆栈或堆分配

c# - C#/.Net 中 'new' 属性的优缺点?

asp.net - ASP.NET 用户控件中可以使用 void async 方法吗?

c - 函数指针的初始值

C++ 类类型作为参数

c++ - 运行时错误打印字符串,即使它在函数中工作正常

c++ - 替换字符串中的单词而不跳过空格