在非主函数中new出来的动态数组怎么在主函数中delete?
我听说将这个指针声明成全局指针就可以了,问题是我怎么声明成全局指针?
#include <iostream>
using namespace std;
struct s//true
{int ID;double S1,S2,S3,Avg;char name[15];};
int num;
void input()//ture
{
cin>>num;
s *p_s = new s[num];
for(int i=0;i!=num;i++)
cin>>p_s[i].ID>>p_s[i].S1>>p_s[i].S2>>p_s[i].S3>>p_s[i].name;
}
int main ()
{
//尝试定义成全局指针
s *p_s=NULL;
//假设input函数没有问题
input();
delete []p_s;
}
#include <iostream>
using namespace std;
struct s//true
{
int ID;
double S1,S2,S3,Avg;
char name[15];
};
int num;
s * input()//ture
{
cin>>num;
s *p_s = new s[num];
for(int i=0;i!=num;i++)
cin>>p_s[i].ID>>p_s[i].S1>>p_s[i].S2>>p_s[i].S3>>p_s[i].name;
return p_s;
}
int main ()
{
s *p_s=NULL;
p_s =input();
delete []p_s;
}
#include <iostream>
using namespace std;
struct s//true
{ int ID; double S1,S2,S3,Avg; char name[15];};
int num;
s *p_s=NULL; //全局指针
void input()//ture
{
cin>>num;
p_s = new s[num];
for(int i=0;i!=num;i++)
cin>>p_s[i].ID>>p_s[i].S1>>p_s[i].S2>>p_s[i].S3>>p_s[i].name;
}
int main ()
{
//尝试定义成全局指针
//s *p_s=NULL;
//假设input函数没有问题
input();
delete []p_s;
}
//或者这样
void input(s *&p_s)
{
cin>>num;
p_s = new s[num];
for(int i=0;i!=num;i++)
cin>>p_s[i].ID>>p_s[i].S1>>p_s[i].S2>>p_s[i].S3>>p_s[i].name;
}
int main ()
{
s *p_s=NULL;
input(p_s);
delete []p_s;
}