欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言函數調用基礎應用詳解

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

所謂函數調用(Function Call),就是使用已經定義好的函數。函數調用的一般形式為:

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

functionName 是函數名稱,param1, param2, param3 ...是實參列表。實參可以是常數、變量、表達式等,多個實參用逗號,分隔。

在C語言中,函數調用的方式有多種,例如:

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

函數的嵌套調用

函數不能嵌套定義,但可以嵌套調用,也就是在一個函數的定義或調用過程中允許出現對另外一個函數的調用。

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

分析:可以編寫兩個函數,一個用來計算階乘,一個用來計算累加的和。

#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++){
//在定義過程中出現嵌套調用
        result +=factorial(i);
}
return result;
}
intmain(){
printf("1!+2!+...+9!+10! = %ld\n",sum(10));//在調用過程中出現嵌套調用
return0;
}

運行結果:

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

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

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

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

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

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

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

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

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

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

相關文章

  • C語言實現簡單通訊錄

    C語言實現簡單通訊錄

    這篇文章主要為大家詳細介紹了C語言實現簡易通訊錄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 淺談Qt QGraphics體系及刷新機制介紹

    淺談Qt QGraphics體系及刷新機制介紹

    這篇文章主要介紹了淺談Qt QGraphics體系及刷新機制介紹,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • C++11中的原子量和內存序詳解

    C++11中的原子量和內存序詳解

    這篇文章主要給大家介紹了關于C++11中原子量和內存序的相關資料,文中通過示例代碼介紹地方非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-06-06
  • C語言中extern詳細用法解析

    C語言中extern詳細用法解析

    這篇文章主要介紹了C語言中extern詳細用法解析,本文講解的extern也是C語言中的關鍵詞,用來修飾函數聲明或變量等,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • C語言實現紅黑樹詳細步驟+代碼

    C語言實現紅黑樹詳細步驟+代碼

    大家好,本篇文章主要講的是C語言實現紅黑樹詳細步驟+代碼,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • MFC實現連連看游戲之地圖顯示

    MFC實現連連看游戲之地圖顯示

    這篇文章主要為大家詳細介紹了MFC實現連連看游戲之地圖顯示,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 詳解C++之函數重載

    詳解C++之函數重載

    這篇文章主要介紹了c++函數重載的相關知識,文章講解的非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06
  • C指針原理教程之C內嵌匯編

    C指針原理教程之C內嵌匯編

    在學習 C 語言內嵌匯編的實驗過程中,發(fā)現內嵌匯編極容易造成段錯誤。
    2019-02-02
  • C++ STL入門教程(3) deque雙向隊列使用方法

    C++ STL入門教程(3) deque雙向隊列使用方法

    這篇文章主要為大家詳細介紹了C++ STL入門教程第三篇,deque雙向隊列的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • C++中Operator類型強制轉換成員函數解析

    C++中Operator類型強制轉換成員函數解析

    轉換函數定義了由<類型說明符1>到<類型說明符2>之間的映射關系??梢姡D換函數是用來將一種類型的數據轉換成為另一種類型
    2013-09-09

最新評論