【发布时间】:2012-02-16 15:32:56
【问题描述】:
我现在在课堂上开始动态内存分配,对它有一个很好的理解,但不能完全正确地使用它。我觉得我可能对指针也不太擅长:p
我的导师给出了创建一个名为 readArray 的函数的说明,该函数将提示用户输入一个数字作为大小,以动态创建一个该大小的整数数组。然后我将新数组分配给一个指针。然后我应该提示用户填充数组。然后我应该返回新创建的数组和大小。
我不知道如何返回数组,我认为在动态分配内存时应该在使用它后删除分配以防止泄漏。
必须将数组和大小返回给 main,以便我可以将其传递给其他函数,例如排序函数。
我将非常感谢我能得到的任何帮助,因为我的思考过程一直朝着错误的方向发展。
#include <iostream>
using namespace std;
int* readArray(int&);
void sortArray(int *, const int * );
int main ()
{
int size = 0;
int *arrPTR = readArray(size);
const int *sizePTR = &size;
sortArray(arrPTR, sizePTR);
cout<<arrPTR[1]<<arrPTR[2]<<arrPTR[3]<<arrPTR[4];
system("pause");
return 0;
}
int* readArray(int &size)
{
cout<<"Enter a number for size of array.\n";
cin>>size;
arrPTR = new int[size];
for(int count = 0; count < (size-1); count++)
{
cout<<"Enter positive numbers to completely fill the array.\n";
cin>>*(arrPTR+count);
}
return arrPTR;
}
【问题讨论】:
-
您的示例中的一个小错误是 readArray 的原型与您实现的不同。尽管没有必要,您也可以考虑在原型中提供变量名称以帮助记录它们的作用。
-
您通常不想更改示例代码以匹配解决方案。这就是答案的目的(当您进行这样的更新时,这可能没有意义)。
-
虽然 C++ 上的大多数类可能很早就涵盖了这样的原始数组,但我认为这是一个坏主意。应该教初学者使用向量,将原始数组和手动动态分配留到课程后面作为高级主题。这就是 Bjarne Stroustrup 出色的初学者书籍Programming—Principals and Practice Using C++ 的处理方式。
标签: c++ arrays pointers dynamic