首页 > 解决方案 > 使用指向数组的指针填充动态数组

问题描述

我想将一个数组传递给一个构造函数并使用它的元素来填充一个动态数组。但是,我不明白如何在构造函数中使用这个数组。

我已经创建了一个返回指向该数组的指针的函数,但我不能在构造函数中为我试图创建的对象使用它。

struct PCB
{
   private:
   int * ptr;
   public:
   PCB(int * array)
   {
      ptr=new int[3];
      for(int i=0;i<3;i++)
      {
         *(ptr+i)=*(array+i);
      }
   }
};

int * returnPtr()
{
   int blockArr[]={21,2,3};
   return blockArr;
}

int main()
{
   PCB * pcb=new PCB(returnPtr());
}

这段代码使用 Visual Studio 代码给了我一个“分段错误”错误。我只是希望能够将数组的元素复制到动态数组中。我哪里搞砸了?

标签: c++arrayspointers

解决方案


您将 blockArr 声明为本地内存,一旦退出 returnPtr 函数,它将被删除。分配 byteArr 就像分配 ptr 一样。

int blockArr = new int[3];

推荐阅读