目錄
- 一.簡介
- 二.函式宣告和定義
- 1.函式宣告:不需要實作這個函式的功能
- 2.函式定義:必須實作這個函式的功能
- 三.函式呼叫
- 四.函式形參和實參
- 五.猜你喜歡
零基礎 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就是實參 */
}
五.猜你喜歡
- C語言邏輯運算子
- C語言三目運算子
- C語言逗號運算式
- C語言 sizeof 和 strlen 函式區別
- C語言 strcpy 和 strcpy_s 函式區別
- C語言 memcpy 和 memcpy_s 區別
- C語言 陣列定義和使用
- C語言 陣列遍歷
- C語言 陣列下標越界
- C語言 陣列記憶體溢位
- C語言 陣列下標越界和記憶體溢位區別
- C語言 二維陣列定義和使用
- C語言 二維陣列行數和列數計算
- C語言 指標宣告和定義
- C語言 指標 p++ / p–
- C語言 p++/§++/_(p++)/_p++
- C語言 使用指標遍歷陣列
- C語言 指標和陣列區別
- C語言 陣列指標
- C語言 指針陣列
- C語言 指標陣列和陣列指標區別
- C語言 空指標 NULL
- C語言 void 指標
- C語言 野指標
- C語言 函式宣告和定義
- C語言 函式宣告和呼叫
未經允許不得轉載:猿說編程 ? C語言 函式宣告和呼叫
本文由博客 - 猿說編程 猿說編程 發布!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/295948.html
標籤:C
