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語言 函數聲明和調用

本文由博客 - 猿說編程 猿說編程 發布!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM