【发布时间】:2018-01-30 01:51:22
【问题描述】:
我有一个将整数添加到数组的函数。如果空间用完,它应该将数组大小加倍并在下一个空闲点添加值。因此,如果数组大小为 3,我输入 99、105 和 45。现在,如果我想添加 100,则应该创建一个大小为 6 的新数组。下面有一个sn-p的代码。一切正常,我什至在本地函数中显示数组 [4],它返回 100。当程序返回 main 以再次显示菜单时,所有值都变为 -572662307。我花了几天的时间试图弄清楚这一点,但无法解决。谁能帮忙?
//Snippet from Main
cout<<"Enter the size of the array to be created";
cin >> size;
int *myArray = new int[size]();
add(myArray,Size);
//Problematic Code
void add (int Array[], int size){
int* temp = new int[size*2]; // create new Array 2x The Size
for (int i = 0; i < size; i++) {
temp[i] = Array[i];//Copy data over
}
delete [] Array;//Delete the old array
Array = temp;
cout << "\n\nEnter a Number: ";
cin >> newNumber;
Array[sizeTrack] = newNumber;
sizeTrack = sizeTrack++;
【问题讨论】:
-
std::vector不解决这类问题吗? -
请提供一个实际的 runnable 示例,而不是 sn-ps(它甚至不起作用,因为您在前几行中使用了例如
size和Size) 和开放式函数。 -
C++ 使用按值传递,除非您指定按引用传递(您没有指定)。函数中的
Array = temp对main 中的myArray没有影响 -
每当您想到“动态数组”时,下一个想法应该始终是
std::vector。 -
作业说要使用数组,我不确定我是否应该在网上发布我的整个作业,所以我只发布了导致问题的代码。