日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

8 函數(shù)嵌套調(diào)用

我們學(xué)習(xí)了函數(shù)的定義和使用,那么,函數(shù)在被調(diào)用之前,必須先進(jìn)行定義或者聲明。

如下是一個程序測試?yán)樱?/p>C語言函數(shù),如何嵌套定義和調(diào)用?

 

程序運(yùn)行結(jié)果如下:

C語言函數(shù),如何嵌套定義和調(diào)用?

 

可以看到,在main函數(shù)中調(diào)用了func函數(shù)。就是說:函數(shù)調(diào)用了函數(shù);那么,我們稱為:函數(shù)嵌套調(diào)用。

注意:不能夠在函數(shù)中定義函數(shù),就是不能夠“嵌套定義函數(shù)”。我們不可以把func函數(shù)的定義放在main函數(shù)的定義中。例如:

int main(int argc, char* argv[])

{

//定義func函數(shù)

void func(int a)

{

printf("in func, a = %dn", a);

}

func(6);

return 0;

}

注意:這樣的代碼,在VC編譯器,或者Visual Studio編譯器中,是非法定義的代碼。

這樣的代碼是錯誤的,雖然在func函數(shù)的調(diào)用之前,定義了func函數(shù)。但是,不能夠在main函數(shù)中定義func函數(shù),就是不能夠嵌套定義函數(shù)。

但是,在Ubuntu系統(tǒng)的GCC編譯器中,支持嵌套定義函數(shù)的語法。

雖然GCC支持這樣的語法,但是,我們不建議嵌套定義函數(shù)。這樣的語法,是不提倡的寫法。不便于代碼的移植。

但是,函數(shù)可以嵌套調(diào)用,就是在函數(shù)的定義中,調(diào)用其他函數(shù),程序測試?yán)尤缦拢?/p>

注意:下面的例子,作者舉例有些復(fù)雜,在分析的過程中,還分析函數(shù)的返回值等數(shù)據(jù)的傳遞。如果只是說明函數(shù)的嵌套調(diào)用,那么,沒有那么復(fù)雜。很簡單,就是:在一個函數(shù)中,調(diào)用一個函數(shù),這就是函數(shù)的嵌套調(diào)用。

下一章節(jié),我們講解函數(shù)的遞歸調(diào)用,才是重點(diǎn)。

C語言函數(shù),如何嵌套定義和調(diào)用?

 

程序運(yùn)行結(jié)果如下:

C語言函數(shù),如何嵌套定義和調(diào)用?

 

我們來分析該程序的執(zhí)行過程如下:

(1) 定義了main函數(shù),是程序的入口地址;程序從main函數(shù)開始執(zhí)行;

(2) 在main函數(shù)中調(diào)用func3函數(shù),執(zhí)行到 int x = func3(); 代碼的時候,就跳轉(zhuǎn)到func3函數(shù)執(zhí)行;

(3) 在func3函數(shù)中調(diào)用func2函數(shù),執(zhí)行到 int c = func2(); 代碼的時候,就跳轉(zhuǎn)到func2函數(shù)執(zhí)行;

(4) 在func2函數(shù)中調(diào)用func1函數(shù),執(zhí)行到int b = func1(); 代碼的時候,就跳轉(zhuǎn)到func1函數(shù)執(zhí)行;

(5) 此時,一步一步嵌套調(diào)用函數(shù),調(diào)用到func1函數(shù),執(zhí)行func1函數(shù)體定義的代碼,執(zhí)行:

printf("in func1, a = %dn", a);

輸出調(diào)試代碼,然后,執(zhí)行return a; 返回變量a的值;

(6) 結(jié)束func1函數(shù)的調(diào)用,返回到func2函數(shù)的int b = func1(); 代碼,此時,把func1函數(shù)的返回值賦給變量b,那么,變量b得到func1函數(shù)的返回值10。

(7) 繼續(xù)執(zhí)行func2函數(shù)的代碼:

printf("in func2, b = %dn", b);

return b;

此時,在func2函數(shù)中輸出信息,然后,返回變量b的值;

(8) 結(jié)束func2函數(shù)的調(diào)用,返回到func3函數(shù)的int c = func2(); 代碼,此時,把func2函數(shù)的返回值賦給變量c,那么,變量c得到func2函數(shù)的返回值12。

(9) 繼續(xù)執(zhí)行func3函數(shù)的代碼:

printf("in func3, c = %dn", c);

return c;

輸出調(diào)試信息,然后,返回變量c的值。最終,結(jié)束func3函數(shù)的調(diào)用,返回到main函數(shù)的int x = func3(); 代碼,此時,結(jié)束func3函數(shù)的調(diào)用,把返回值賦給變量x。在main函數(shù)中輸出變量x的值。執(zhí)行完main函數(shù)之后,結(jié)束程序的運(yùn)行。

通過這個程序的分析,我們知道了函數(shù)的嵌套調(diào)用,就是在函數(shù)中調(diào)用函數(shù)。碰到調(diào)用函數(shù)時,就跳轉(zhuǎn)到函數(shù)定義的函數(shù)體中運(yùn)行。例如,在main函數(shù)中調(diào)用func3函數(shù)的時候,就跳轉(zhuǎn)到func3函數(shù)定義函數(shù)體中運(yùn)行。

分享到:
標(biāo)簽:語言
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定