我对指针有疑问。这是我的问题:
编写一个函数
int* read_data(int& size)
来读取数据,cin
直到用户通过输入 Q 终止输入。该函数应将大小参考参数设置为数字输入的数量。返回指向堆上数组的指针。该数组应该具有完全大小的元素。当然,您一开始并不知道用户将输入多少个元素。从包含 10 个元素的数组开始,每当数组填满时将大小加倍。最后,分配一个正确大小的数组并将所有输入复制到其中。请务必删除任何中间数组。
这是我的代码:
int* read_data(int& size);
int main()
{
int size ;
int* account_pointer = read_data(size);
int* account_array = new int[size];
int* bigger_array = new int[2 * size];
for (int i = 0; i < size; i++)
{
bigger_array[i] = account_array[i];
}
delete[] account_array;
account_array = bigger_array;
size = 2 * size;
system("PAUSE");
return 0;
}
int* read_data(int& size)
{
int input;
cout << "Enter integer, Q to quit : " ;
while(cin >> input)
{
size++;
}
return &size;
}
但是,当我插入非数字时,我收到一条错误消息。错误消息是Debug Error! Invalid allocation size : 4294967295 bytes
。我在 main 方法中错误地声明了 size 变量吗?还是我的整个代码编码错误?