1. 程式人生 > 其它 >C語言 函式宣告和呼叫 - C語言零基礎入門教程

C語言 函式宣告和呼叫 - C語言零基礎入門教程

目錄

零基礎 Python 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門

一.簡介

回顧以下學習C 語言的第一個程式HelloWorld,程式碼如下:

#include<stdio.h> //printf函式的宣告就在該標頭檔案中
void main()
{
    //因為 stdio.h 包含了printf函式宣告,所以可以直接呼叫printf函式
    printf("hello world");
}

stdio.h 標頭檔案包含了 printf 函式的宣告和定義,所以我們可以直接呼叫該函式;當然我們也可以跳轉到 stdio.h 標頭檔案中檢視 printf 函式的宣告和定義:

/******************************************************************************************/
//@Author:猿說程式設計
//@Blog(個人部落格地址): www.codersrc.com
//@File:C語言教程 - 函式宣告和呼叫
//@Time:2021/06/20 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
/******************************************************************************************/ 

    _CRT_STDIO_INLINE int __CRTDECL printf(
        _In_z_ _Printf_format_string_ char const* const _Format,
        ...)
    #if defined _NO_CRT_STDIO_INLINE
    ;
    #else
    {
        int _Result;
        va_list _ArgList;
        __crt_va_start(_ArgList, _Format);
        _Result = _vfprintf_l(stdout, _Format, NULL, _ArgList);
        __crt_va_end(_ArgList);
        return _Result;
    }
    #endif

printf 函式的實現原理,你可以不用管,你只需要明白如何傳遞引數即可,這就是函式呼叫的過程;

二.函式宣告和定義

函式宣告只是一個空殼,不會有具體的函式實現,而定義要實現函式的實現,例如:

1.函式宣告:不需要實現這個函式的功能

int sub(int x,int y); //只需要宣告即可,不需要實現這個函式的功能

2.函式定義:必須實現這個函式的功能

int sub(int x,int y) 需要實現這個函式的功能
{
    return (x-y);
}

三.函式呼叫

函式在呼叫之前必須宣告或者定義,否則會報錯:找不到識別符號,這也是為什麼hello world中呼叫 printf

函式必須要包含 stdio.h 標頭檔案的原因;

我們觀察如下程式碼:

/******************************************************************************************/
//@Author:猿說程式設計
//@Blog(個人部落格地址): www.codersrc.com
//@File:C語言教程 - 函式宣告和呼叫
//@Time:2021/06/20 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
/******************************************************************************************/ 

#include<stdio.h>
void main()
{
    int ret = sub(2, 1); //函式呼叫
    printf("ret:%d ", ret);
    return ;
}
int sub(int x, int y) //函式定義
{
    return (x - y);
}

編譯的時候報錯:

錯誤 C3861 “sub”: 找不到識別符號  

首先我們分析:程式首先進入 main 函式,然後呼叫 sub 函式,此時在呼叫之前都找不到 sub 的宣告,當然不知道 sub 是個什麼玩意!!

解決辦法一:將函式定義在 main 前面,示例程式碼如下:

/******************************************************************************************/
//@Author:猿說程式設計
//@Blog(個人部落格地址): www.codersrc.com
//@File:C語言教程 - 函式宣告和呼叫
//@Time:2021/06/20 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
/******************************************************************************************/ 

#include<stdio.h>
int sub(int x, int y)//函式定義
{
    return (x - y);
}
void main()
{
    int ret = sub(2, 1);//函式呼叫
    printf("ret:%d ", ret);
    return ;
}

解決辦法二:講函式宣告在 main 函式前面,只要有了函式宣告,函式不論是定義在 main 函式前面或者後面都無所謂,示例程式碼如下:

/******************************************************************************************/
//@Author:猿說程式設計
//@Blog(個人部落格地址): www.codersrc.com
//@File:C語言教程 - 函式宣告和呼叫
//@Time:2021/06/20 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
/******************************************************************************************/ 

#include<stdio.h>
//函式宣告
int sub(int x, int y);
void main()
{
    int ret = sub(2, 1); //函式呼叫
    printf("ret:%d ", ret);
    return ;
}
//函式定義
int sub(int x, int y)
{
    return (x - y);
}

四.函式形參和實參

形參是函式定義的時候用的,實參是呼叫函式的時候用的,舉個例子:

/******************************************************************************************/
//@Author:猿說程式設計
//@Blog(個人部落格地址): www.codersrc.com
//@File:C語言教程 - 函式宣告和呼叫
//@Time:2021/06/20 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
/******************************************************************************************/ 

void fun(int a); /* 這裡的a就是形參 */
int main()
{
    int b = 1;
    fun(b); /* b就是實參 */
}

五.猜你喜歡

  1. C語言邏輯運算子
  2. C語言三目運算子
  3. C語言逗號表示式
  4. C語言 sizeof 和 strlen 函式區別
  5. C語言 strcpy 和 strcpy_s 函式區別
  6. C語言 memcpy 和 memcpy_s 區別
  7. C語言 陣列定義和使用
  8. C語言 陣列遍歷
  9. C語言 陣列下標越界
  10. C語言 陣列記憶體溢位
  11. C語言 陣列下標越界和記憶體溢位區別
  12. C語言 二維陣列定義和使用
  13. C語言 二維陣列行數和列數計算
  14. C語言 指標宣告和定義
  15. C語言 指標 p++ / p–
  16. C語言 p++/§++/_(p++)/_p++
  17. C語言 使用指標遍歷陣列
  18. C語言 指標和陣列區別
  19. C語言 陣列指標
  20. C語言 指標陣列
  21. C語言 指標陣列和陣列指標區別
  22. C語言 空指標 NULL
  23. C語言 void 指標
  24. C語言 野指標
  25. C語言 函式宣告和定義
  26. C語言 函式宣告和呼叫

未經允許不得轉載:猿說程式設計 » C語言 函式宣告和呼叫

本文由部落格 - 猿說程式設計 猿說程式設計 釋出!