C語言 函式宣告和呼叫 - C語言零基礎入門教程
阿新 • • 發佈:2021-08-30
目錄
零基礎 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語言 函式宣告和呼叫
本文由部落格 - 猿說程式設計 猿說程式設計 釋出!