#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行對申請地址釋放。
仔細研究吧,超經典!