C++ 如何将数组的一部分初始化为零c++;

C++ 如何将数组的一部分初始化为零c++;,c++,arrays,elements,C++,Arrays,Elements,我是一名编程新手。我目前正在研究指针和动态数组。我需要帮助的任务要求我创建一个数组,然后使用函数将元素加倍,并将数组的后半部分初始化为零。这是我的密码: #include <iostream> using namespace std; // Function prototype void doubleArray(int*, int); // Global variable for array elements int numElems = 5; int main() { i

我是一名编程新手。我目前正在研究指针和动态数组。我需要帮助的任务要求我创建一个数组,然后使用函数将元素加倍,并将数组的后半部分初始化为零。这是我的密码:

#include <iostream>

using namespace std;

// Function prototype
void doubleArray(int*, int);

// Global variable for array elements
int numElems = 5;

int main()
{
 int* oldArray;    // Array variable
  oldArray = new int[numElems]{1, 3, 5, 7, 9};  // Makes the array dynamic

  // Display old array
  cout << "This is the old array.\n";
  for (int a = 0; a < numElems; a++)
  {
   cout << oldArray[a] << endl;   
  }

  // Double the array size, copy old array into new array, and initialize the rest of the space to zero
  doubleArray(oldArray, numElems);

  cout << endl;

  delete[] oldArray;
  oldArray = nullptr;

  return 0;
}

// Function doubles array size, copies old array into new array, and initializes the rest of the space to zero
void doubleArray(int* newArray, int size)
{
    size *= 2;
    for (int b = 5; b < (size/2); b++)
    {
       newArray[b] = {0}; 
    }
    cout << "This is the new array.\n";
    for (int c = 0; c < size; c++)
    {
        cout << newArray[c] << endl;
    }
}
#包括
使用名称空间std;
//功能原型
空双数组(int*,int);
//数组元素的全局变量
整数=5;
int main()
{
int*oldArray;//数组变量
oldArray=newint[numElems]{1,3,5,7,9};//使数组动态
//显示旧阵列

不能在
doubleArray
中没有任何地方可以将数组加倍。相反,你开始在旧数组周围的数据上跺脚。这不是一个好主意。你不知道那里有什么。可能是一些重要的东西。可能会使你的程序崩溃。在过去,它可能会使计算机崩溃,或者在另一个程序中破坏一些重要信息。也许是某人的银行账户,也许是飞机的飞行说明,不太好

要解决此问题,您需要
new[]
自己创建另一个
int
s数组,该数组的大小是原始数组的两倍。不要将该变量重新用于旧数组。如果对其进行写操作,则会丢失旧数组。如果未正确放置旧数组,您仍然需要将旧数据从旧数组中提取到新数组中

完成此操作后,进入下一位:保留旧数据并将新数组的其余部分归零。为此,请将旧数组中的所有数据复制到新数组中(对于此项工作,
for
loop非常适合),并用零填充新数组的其余部分

接下来是一些内部事务。由于不再需要旧阵列,您可以安全地
删除[]
它以防止内存泄漏

最后,将新数组返回给调用者


如果你觉得自己很勇敢,请向你的导师指出,有一种非常酷的东西,它是上世纪90年代发明的,基本上可以做所有这些事情(还有更多!)适合您。

当您尝试增加元素数量时,为其分配内存的数组仅为5个整数,您必须为该数组分配更多内存

您应该做的是为一个大小为两倍的数组分配内存,复制初始数组的内容,然后将另一半元素指定为0


然后返回新数组的引用,也可以将旧数组设为“点”到新的引用

应该是
const int numElems=5;
问题是您传递了
oldArray
,因为输入
newArray
oldArray
是旧的,仍然只有5 int长。您必须创建一个两倍于大小的新数组。在设置此分配之前,您的cla有很多可能的方法学生会复习一些有用的技巧谢谢你的评论,它们非常有用。我真的很感激。:)哦,好的,这比我脑子里想的更有意义。所以现在我只需要找出如何从一个数组中提取信息并将其放入另一个数组中。我将查阅我的课本和其他文档网站上的stions。非常感谢您的帮助!:)