函數(shù)的嵌套調(diào)用
C語言中不允許作嵌套的函數(shù)定義。因此各函數(shù)之間是平行的,不存在上一級函數(shù)和下一級函數(shù)的問題。 但是C
語言允許在一個函數(shù)的定義中出現(xiàn)對另一個函數(shù)的調(diào)用。這樣就出現(xiàn)了函數(shù)的嵌套調(diào)用。即在被調(diào)函數(shù)中又調(diào)用其它
函數(shù)。 這與其它語言的子程序嵌套的情形是類似的。其關系可表示如圖5.2。
表示了兩層嵌套的情形。其執(zhí)行過程是:執(zhí)行 main函數(shù)中調(diào)用 a函數(shù)的語句時,即轉(zhuǎn)去執(zhí)行 a函數(shù),在 a
函數(shù)中調(diào)用b 函數(shù)時,又轉(zhuǎn)去執(zhí)行b函數(shù),b函數(shù)執(zhí)行完畢返回 a函數(shù)的斷點繼續(xù)執(zhí)行,a 函數(shù)執(zhí)行完畢返回main
函數(shù)的斷點繼續(xù)執(zhí)行。
[例 5.8]計算s=2 2!+3 2!
本題可編寫兩個函數(shù),一個是用來計算平方值的函數(shù) f1, 另一個是用來計算階乘值的函數(shù) f2。主函數(shù)先調(diào) f1計算出
平方值, 再在 f1中以平方值為實參,調(diào)用 f2計算其階乘值,然后返回f1,再返回主函數(shù),在循環(huán)程序中計算累加
和。
long f1(int p)
{
int k;
long r;
long f2(int);
k=p*p;
r=f2(k);
return r;
}
long f2(int q)
{
long c=1;
int i;
for(i=1;i<=q;i++)
c=c*i;
return c;
}
main()
{
int i;
long s=0;
for (i=2;i<=3;i++)
s=s+f1(i);
printf("\ns=%ld\n",s);
}
long f1(int p)
{
……
long f2(int);
r=f2(k);
……
}
long f2(int q)
{
……
}
main()
{ ……
s=s+f1(i);
……
}
![]() |
![]() | ![]() .. 定價:¥225 優(yōu)惠價:¥213 更多書籍 |
![]() | ![]() .. 定價:¥133 優(yōu)惠價:¥133.0 更多書籍 |