【发布时间】:2013-05-07 13:53:03
【问题描述】:
我对指针有疑问。这是我的问题:
编写一个函数
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 变量吗?还是我的整个代码编码错误?
【问题讨论】:
-
ayuelkenbeck 的回答解决了您的问题,但请注意您的实施中还有其他问题。您的代码没有满足要求。
-
所以你从
cin读取input然后呢?您只需将下一个整数读入同一个变量即可将其丢弃。您不会将其存储在数组中。 -
@leemes 我写这个是为了将输入存储到数组中。 int* account_array [大小] = 输入;但大小不是 const 因此存在错误。我该如何解决它
-
请不要完全更改问题,这会使现有答案无效。我回滚了你的编辑。您可以就您的问题提出另一个问题 - 或者更确切地说,做一些研究,因为之前有一千个人遇到过同样的问题。
标签: c++ arrays pointers heap-memory