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。非常感谢您的帮助!:)