{
使用?STD::cout;
使用?STD::endl;
a*?p[5]={?0?};?//?聲明壹個包含五個元素的指針數組,每個元素都是A類型的指針,並將所有元素初始化為空。
為了什麽?(int?我?=?0;?我?& lt?5;?i++)?
p[i]?=?新的?a;//?為數組的元素申請內存
壹個**?pp?=?p;//?聲明壹個指向指針的指針pp,指針指向壹個指向a的指針。
?//?*pp?==?*p,pp==p
?//?p也是指針,指向數組p[5]的起始位置,也就是p[0],現在pp也指向p[0]。
{
(* p)-& gt;ss?=?1;//?p[0]的ss賦值為1。
p[1]-& gt;ss?=?2;//?p[1]的ss賦值為2。
(((p?+?2))-& gt;ss?=?3;//?p[2]的ss賦值為3,指針相加就是偏移量,p+2相當於p[0]偏移兩個位置,即p[2]。
(((pp?+?3))-& gt;ss?=?4;?//?p[3]的ss賦值為4,pp?+?3表示p[0]移動三個位置。
PP[4]-& gt;ss?=?5;?//?p[4]的ss賦值為5。
為了什麽?(int?我?=?0;?我?& lt?5;?i++)
{
cout?& lt& lt?p[I]-& gt;ss?& lt& lt?”\ t”;?//?輸出p中每個元素的ss成員值。
如果?(我?==?4)?
cout?& lt& lt?”\ n”;
}
}
{
const?a & amp?(* FP 1)(a & amp;)?=?添加;//?聲明壹個返回值為const的函數指針?a & amp,參數類型是a &;
//?將fp1初始化為add的地址。
const?a & amp?(*法新社[2])(a & amp;)?={?補充壹下,?recude?};//?以fp1的形式聲明壹個函數指針數組。
//?並用數組值add和recude初始化地址。
const?a & amp?(*(* afpp)[2])(a & amp;)?=?& amp法新社;//?聲明壹個指向兩個元素的函數指針數組的指針,並將其初始化為afp的地址。
汽車?afpp2?=?afpp
cout?& lt& lt?((*fp1)(*p[0]))。ss?& lt& lt?”\ t”;//?相當於add(*p[0]).ss。
//cout?& lt& lt?FP 1((* * *(p?+?1))).ss?& lt& lt?”\ t”;?//?用詞有問題,修改下面這句話。
cout?& lt& lt?((* FP 1)(*(p?+?1))).ss?& lt& lt?”\ t”;//?相當於add(*p[1]).ss。
cout?& lt& lt?(((法新社?+?1))(*pp[2])。ss?& lt& lt?”\ t”;?//?相當於recude(*p[2]).ss。
cout?& lt& lt?(*(* afpp)[0])((*(PP?+?3))).ss?& lt& lt?”\ t”;?//?相當於add(*p[3]).ss。
cout?& lt& lt?(((((*afpp2?+?1)))(*(*(pp?+?4))).ss?& lt& lt?”t \ n”;//?相當於recude(*p[4]).ss。
}
//?應該釋放內存,否則會出現內存泄漏。
為了什麽?(int?我?=?0;?我?& lt?5;?i++)
刪除?p[I];
}