大致意思就是 我在函数内 new 创建了对象,那么在函数外又重新指向了对象,那么怎么 delete 呢?
/****************************
c++ Primer plus 7.13 练习
编写一个程序,要求用户输入最多 10 个高尔夫成绩,并将其存储在一个数组中。程序允许用户提早结束输入,并在
一行上显示所有成绩,然后报告平均成绩。请使用 3 个数组处理函数来分别进行输入、显示和计算平均成绩。请使用 3 个数组
处理函数来分别
******************************/
#include <iostream>
using namespace std;
double *inputValue(int *n);
void showValue(double arr [],int n);
double avgValue(double arr [],int n);
const int SIZE = 10;
int main(){
int n = 0;
double *array = inputValue(&n);// 这里算是将 inputValue 函数中 new 的 double *arr 对象重新指向 array 么?
showValue(array,n);
double temp = avgValue(array,n);
cout << "\navg value : "<<temp<<endl;
delete [] array;//这里将 array delete 掉。那么 inputValue 中 new 的 arr 怎么办? 也能被 delete 掉么?
return 0;
}
double * inputValue(int *n)
{
double * arr = new double[SIZE];
for(int i = 0;i<SIZE;i++)
{
cin >> arr[i];
(*n)++;
}
return arr;
}
void showValue(double arr [] ,int n )
{
for(int i = 0;i<n;i++)
{
cout << arr[i] <<" ";
}
cout << "\n";
}
double avgValue(double arr [],int n)
{
double total = 0.0;
for(int i = 0 ;i<n;i++)
{
total += arr[i];
}
return (total/n);
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.