最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言函數(shù)調(diào)用基礎(chǔ)應(yīng)用詳解

 更新時(shí)間:2023年02月11日 10:38:51   作者:Elanie1024  
函數(shù)就是一段封裝好的,可以重復(fù)使用的代碼,它使得我們的程序更加模塊化,不需要編寫大量重復(fù)的代碼。這篇文章主要介紹了c語言是如何處理函數(shù)調(diào)用的?需要的朋友可以參考下

所謂函數(shù)調(diào)用(Function Call),就是使用已經(jīng)定義好的函數(shù)。函數(shù)調(diào)用的一般形式為:

functionName(param1, param2, param3 ...);

functionName 是函數(shù)名稱,param1, param2, param3 ...是實(shí)參列表。實(shí)參可以是常數(shù)、變量、表達(dá)式等,多個(gè)實(shí)參用逗號,分隔。

在C語言中,函數(shù)調(diào)用的方式有多種,例如:

//函數(shù)作為表達(dá)式中的一項(xiàng)出現(xiàn)在表達(dá)式中
z =max(x, y);
m = n +max(x, y);
//函數(shù)作為一個(gè)單獨(dú)的語句
printf("%d", a);
scanf("%d",&b);
//函數(shù)作為調(diào)用另一個(gè)函數(shù)時(shí)的實(shí)參
printf("%d",max(x, y));
total(max(x, y),min(m, n));

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

函數(shù)不能嵌套定義,但可以嵌套調(diào)用,也就是在一個(gè)函數(shù)的定義或調(diào)用過程中允許出現(xiàn)對另外一個(gè)函數(shù)的調(diào)用。

【示例】計(jì)算sum = 1! + 2! + 3! + ... + (n-1)! + n!

分析:可以編寫兩個(gè)函數(shù),一個(gè)用來計(jì)算階乘,一個(gè)用來計(jì)算累加的和。

#include<stdio.h>
//求階乘
longfactorial(int n){
int i;
long result=1;
for(i=1; i<=n; i++){
        result *= i;
}
return result;
}
// 求累加的和
longsum(long n){
int i;
long result =0;
for(i=1; i<=n; i++){
//在定義過程中出現(xiàn)嵌套調(diào)用
        result +=factorial(i);
}
return result;
}
intmain(){
printf("1!+2!+...+9!+10! = %ld\n",sum(10));//在調(diào)用過程中出現(xiàn)嵌套調(diào)用
return0;
}

運(yùn)行結(jié)果:

1!+2!+...+9!+10! = 4037913

sum() 的定義中出現(xiàn)了對 factorial() 的調(diào)用,printf() 的調(diào)用過程中出現(xiàn)了對 sum() 的調(diào)用,而 printf() 又被 main() 調(diào)用,它們整體調(diào)用關(guān)系為:

main() --> printf() --> sum() --> factorial()

如果一個(gè)函數(shù) A() 在定義或調(diào)用過程中出現(xiàn)了對另外一個(gè)函數(shù) B() 的調(diào)用,那么我們就稱 A() 為主調(diào)函數(shù)或主函數(shù),稱 B() 為被調(diào)函數(shù)。

當(dāng)主調(diào)函數(shù)遇到被調(diào)函數(shù)時(shí),主調(diào)函數(shù)會暫停,CPU 轉(zhuǎn)而執(zhí)行被調(diào)函數(shù)的代碼;被調(diào)函數(shù)執(zhí)行完畢后再返回主調(diào)函數(shù),主調(diào)函數(shù)根據(jù)剛才的狀態(tài)繼續(xù)往下執(zhí)行。

一個(gè)C語言程序的執(zhí)行過程可以認(rèn)為是多個(gè)函數(shù)之間的相互調(diào)用過程,它們形成了一個(gè)或簡單或復(fù)雜的調(diào)用鏈條。這個(gè)鏈條的起點(diǎn)是 main(),終點(diǎn)也是 main()。當(dāng) main() 調(diào)用完了所有的函數(shù),它會返回一個(gè)值(例如return 0;)來結(jié)束自己的生命,從而結(jié)束整個(gè)程序。

函數(shù)是一個(gè)可以重復(fù)使用的代碼塊,CPU 會一條一條地挨著執(zhí)行其中的代碼,當(dāng)遇到函數(shù)調(diào)用時(shí),CPU 首先要記錄下當(dāng)前代碼塊中下一條代碼的地址(假設(shè)地址為 0X1000),然后跳轉(zhuǎn)到另外一個(gè)代碼塊,執(zhí)行完畢后再回來繼續(xù)執(zhí)行 0X1000 處的代碼。整個(gè)過程相當(dāng)于 CPU 開了一個(gè)小差,暫時(shí)放下手中的工作去做點(diǎn)別的事情,做完了再繼續(xù)剛才的工作。

從上面的分析可以推斷出,在所有函數(shù)之外進(jìn)行加減乘除運(yùn)算、使用 if...else 語句、調(diào)用一個(gè)函數(shù)等都是沒有意義的,這些代碼位于整個(gè)函數(shù)調(diào)用鏈條之外,永遠(yuǎn)都不會被執(zhí)行到。C語言也禁止出現(xiàn)這種情況,會報(bào)語法錯(cuò)誤,請看下面的代碼:

#include<stdio.h>
int a =10, b =20, c;
//錯(cuò)誤:不能出現(xiàn)加減乘除運(yùn)算
c = a + b;
//錯(cuò)誤:不能出現(xiàn)對其他函數(shù)的調(diào)用
printf("csdn.net");
intmain(){
return0;
}

到此這篇關(guān)于C語言函數(shù)調(diào)用基礎(chǔ)應(yīng)用詳解的文章就介紹到這了,更多相關(guān)C語言函數(shù)調(diào)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Opencv圖像處理之圖像增加邊框

    Opencv圖像處理之圖像增加邊框

    這篇文章主要為大家詳細(xì)介紹了Opencv圖像處理之圖像增加邊框,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • C語言實(shí)現(xiàn)動態(tài)開辟存儲楊輝三角

    C語言實(shí)現(xiàn)動態(tài)開辟存儲楊輝三角

    這篇文章主要介紹了如何利用C語言實(shí)現(xiàn)動態(tài)開辟存儲楊輝三角,可以靈活的開辟空間,充分的利用空間。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2022-03-03
  • C語言實(shí)現(xiàn)哈夫曼編碼

    C語言實(shí)現(xiàn)哈夫曼編碼

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)哈夫曼編碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C++內(nèi)嵌匯編示例詳解

    C++內(nèi)嵌匯編示例詳解

    這篇文章主要介紹了C++內(nèi)嵌匯編,本文的所有代碼是在我自己的VS2008中測試的,由于環(huán)境的差別,不能保證能在所有的編譯器上運(yùn)行,需要的朋友可以參考下
    2022-01-01
  • Qt圖形圖像開發(fā)之Qt曲線圖美化QChart QScatterSeries 空心點(diǎn)陣圖,鼠標(biāo)移動到上面顯示數(shù)值,鼠標(biāo)移開數(shù)值消失效果實(shí)例

    Qt圖形圖像開發(fā)之Qt曲線圖美化QChart QScatterSeries 空心點(diǎn)陣圖,鼠標(biāo)移動到上面顯示數(shù)值,鼠標(biāo)移開

    這篇文章主要介紹了Qt圖形圖像開發(fā)之Qt曲線圖美化QChart QScatterSeries 空心點(diǎn)陣圖,鼠標(biāo)移動到上面顯示數(shù)值,鼠標(biāo)移開數(shù)值消失效果實(shí)例,需要的朋友可以參考下
    2020-03-03
  • C/C++細(xì)數(shù)宏與函數(shù)有那些區(qū)別

    C/C++細(xì)數(shù)宏與函數(shù)有那些區(qū)別

    在C程序中,可以用宏代碼提高執(zhí)行效率。宏代碼本身不是函數(shù),但使用起來象函數(shù)。預(yù)處理器用復(fù)制宏代碼的方式代替函數(shù)調(diào)用,省去了參數(shù)壓棧、生成匯編語言的CALL調(diào)用、返回參數(shù)、執(zhí)行return等過程,從而提高了速度
    2022-10-10
  • C++繼承中的訪問控制實(shí)例分析

    C++繼承中的訪問控制實(shí)例分析

    這篇文章主要介紹了C++繼承中的訪問控制,是面向?qū)ο蟪绦蛟O(shè)計(jì)中非常重要的知識點(diǎn),需要的朋友可以參考下
    2014-08-08
  • C++前綴樹字典樹的學(xué)習(xí)與模擬實(shí)現(xiàn)代碼示例

    C++前綴樹字典樹的學(xué)習(xí)與模擬實(shí)現(xiàn)代碼示例

    這篇文章主要介紹了C++前綴樹字典樹的學(xué)習(xí)與模擬實(shí)現(xiàn)代碼示例,Trie又被稱為前綴樹、字典樹,所以當(dāng)然是一棵樹,上面這棵Trie樹包含的字符串集合是{in,inn,int,tea,ten,to},每個(gè)節(jié)點(diǎn)的編號是我們?yōu)榱嗣枋龇奖慵由先サ?需要的朋友可以參考下
    2023-07-07
  • C/C++編譯報(bào)錯(cuò)printf was not declared in this scope問題及解決

    C/C++編譯報(bào)錯(cuò)printf was not declared in 

    這篇文章主要介紹了C/C++編譯報(bào)錯(cuò)printf was not declared in this scope問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C語言結(jié)構(gòu)體嵌套與對齊超詳細(xì)講解

    C語言結(jié)構(gòu)體嵌套與對齊超詳細(xì)講解

    這篇文章主要介紹了C語言結(jié)構(gòu)體嵌套與對齊,C語言中結(jié)構(gòu)體是一種構(gòu)造類型,和數(shù)組、基本數(shù)據(jù)類型一樣,可以定義指向該種類型的指針。結(jié)構(gòu)體指針的定義類似其他基本數(shù)據(jù)類型的定義
    2022-12-12

最新評論

高州市| 乌拉特前旗| 弥勒县| 沙雅县| 伊吾县| 马龙县| 禹城市| 沽源县| 普定县| 苍南县| 师宗县| 北安市| 韶关市| 巴里| 富宁县| 绍兴市| 息烽县| 舟山市| 芦山县| 报价| 龙岩市| 梁平县| 体育| 漳浦县| 周口市| 平武县| 泸西县| 乃东县| 延长县| 湟源县| 莫力| 新建县| 浦江县| 德安县| 颍上县| 仙游县| 吉水县| 永泰县| 桐乡市| 大兴区| 甘泉县|