#include<iostram>
using namespace std;
void fun(int *& a, int &m)
{
a=new int[m]; //A
int * p=a;
for(int i=0;i<m;i++)
*p++=i*i+1;
}
int main()
{ int *b,n=5;
fun(b,n);
for(int i=0;i<n;i++)
cout<<b[i]<<' ';
cout<<endl;
delete[]b; //B
}
运行结果是:
1 2 5 10 17
分析:指针变量在函数main中没有取得地址,所以在A行中,对被调用函数fun给对应的形参指针变量申请地址,即指针变量b和形参指针变量p指向同一组地址。B行对申请地址释放。
仔细研究吧,超经典!