C語言核心技術——函數

C語言文章更新目錄

C/C++學習資源(百度雲盤鏈接)
計算機二級資料(過級專用)
C語言學習路線(從入門到實戰)
編寫C語言程序的7個步驟和編程機制
C語言基礎-第一個C程序
C語言基礎-簡單程序分析
VS2019編寫簡單的C程序示例
簡單示例,VS2019調試C語言程序
C語言基礎-基本算法
C語言基礎-數據類型
C語言中的輸入輸出函數
C語言流程控制語句
C語言數組——一維數組
C語言數組——二維數組
C語言數組——字符數組
C語言中常用的6個字符串處理函數
精心收集了60個C語言項目源碼,分享給大家

對於一個C程序而言,它所有的命令都包含在函數內。每個函數都會執行特定的任務。有一個特別的函數,名稱爲main()——該函數是程序啓動後,第一個執行的函數。其他所有函數都是main()函數的子函數(或者與之相關聯的過程,例如回調函數),並且它們的函數名稱可以自己設定。每個函數都只能被定義一次。但一個函數可以根據需要被多次的聲明和調用。

函數的定義

C 語言中的函數定義的一般形式如下:

return_type function_name( parameter list )
{
   body of the function
}

函數由一個函數頭和一個函數主體組成。下面列出一個函數的所有組成部分:

  • 返回類型: 一個函數可以返回一個值。return_type 是函數返回的值的數據類型。有些函數執行所需的操作而不要返回值,在這種情況下,return_type 是關鍵字 void
  • 函數名稱: 這是函數的實際名稱。函數名和參數列表一起構成了函數簽名。
  • 參數: 參數就像是佔位符。當函數被調用時,您向參數傳遞一個值,這個值被稱爲實際參數。參數列表包括函數參數的類型、順序、數量。參數是可選的,也就是說,函數可能不包含參數。
  • 函數主體: 函數主體包含一組定義函數執行任務的語句。

下來看個示例:

int add(int a, int b){
    int result;
    rusult = a + b;
    return result;
}

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Srd5Aw0D-1588853792568)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200507194314713.png)]

{}之間的內容則爲函數體。

函數的聲明和調用

在使用函數之前應該先聲明,事先通知編譯器該函數的類型:換句話說,一個聲明即是描述一個函數的接口。聲明至少應指明函數返回值的類型,如下例所示:

int add(int a, int b);

在函數聲明中,參數的名稱並不重要,只有參數的類型是必需的,因此下面也是有效的聲明:

int max(int, int);

創建 C 函數時,會定義函數做什麼,然後通過調用函數來完成已定義的任務。

當程序調用函數時,程序控制權會轉移給被調用的函數。被調用的函數執行已定義的任務,當函數的返回語句被執行時,或到達函數的結束括號時,會把程序控制權交還給主程序。

調用函數時,傳遞所需參數,如果函數返回一個值,則可以存儲返回值。

接下來我們再看一個示例:

#include <stdio.h>

/* 函數聲明 */
int max(int num1, int num2);

int main()
{
    /* 局部變量定義 */
    int a = 100;
    int b = 200;
    int ret;

    /* 調用函數來獲取最大值 */
    ret = max(a, b);

    printf("Max value is : %d\n", ret);

    return 0;
}

/* 函數返回兩個數中較大的那個數 */
int max(int num1, int num2)
{
    /* 局部變量聲明 */
    int result;

    if (num1 > num2)
        result = num1;
    else
        result = num2;

    return result;
}

運行結果如下:

函數調用這一塊我想着重說下遞歸調用

所謂遞歸,就是自己調用自己。C語言中函數可以直接或間接的調用自己,所謂的間接調用,是指在遞歸函數調用的下層函數中再調用自己,遞歸關係如下圖:

  • 直接調用

  • 間接調用
    在這裏插入圖片描述

語法格式如下:

void recursion()
{
   statements;
   ... ... ...
   recursion(); /* 函數調用自身 */
   ... ... ...
}
 
int main()
{
   recursion();
}

流程圖:
在這裏插入圖片描述
下來我們一起看一個關於函數遞歸調用的示例

//下面的實例使用遞歸函數生成一個給定的數的斐波那契數列:
#include <stdio.h>
 
int fibonaci(int i)
{
   if(i == 0)
   {
      return 0;
   }
   if(i == 1)
   {
      return 1;
   }
   return fibonaci(i-1) + fibonaci(i-2);
}
 
int  main()
{
    int i;
    for (i = 0; i < 10; i++)
    {
       printf("%d\t\n", fibonaci(i));
    }
    return 0;
}

函數運行結果:
在這裏插入圖片描述
關於函數今天就先介紹到這,後面繼續更新。。。

如果您覺得本篇文章對您有幫助,請轉發給更多的人
C語言中文社區】是一個C語言/C++視頻教程、學習筆記、電子書、計算機二級資料等專注於C語言/C++編程學習者的乾貨知識分享平臺,精選深度文章,分享優秀乾貨類、技能類的學習資源,幫助學習中的你。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章