當前位置:編程學習大全網 - 編程語言 - 求高手分析C++代碼

求高手分析C++代碼

這應該是指針測試。struct a,add,recude的作用我就不說了。我在關鍵部分加了註釋。我按照自己的編程習慣安排了下壹版,然後修改了兩個有問題的地方。下面是關鍵部分的代碼。

{

使用?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];

}

  • 上一篇:表白情書50字
  • 下一篇:2022天宮課堂小實驗觀後感及心得7篇
  • copyright 2024編程學習大全網