目錄
零基礎(chǔ) Python 學(xué)習(xí)路線推薦 : C/C++ 學(xué)習(xí)目錄 >> C 語言基礎(chǔ)入門
一.簡(jiǎn)介
回顧以下學(xué)習(xí)C
語言的第一個(gè)程序HelloWorld
芳来,代碼如下:
#include<stdio.h> //printf函數(shù)的聲明就在該頭文件中
void main()
{
//因?yàn)?stdio.h 包含了printf函數(shù)聲明,所以可以直接調(diào)用printf函數(shù)
printf("hello world");
}
stdio.h
頭文件包含了 printf
函數(shù)的聲明和定義尽爆,所以我們可以直接調(diào)用該函數(shù)爪幻;當(dāng)然我們也可以跳轉(zhuǎn)到 stdio.h
頭文件中查看 printf
函數(shù)的聲明和定義:
/******************************************************************************************/
//@Author:猿說編程
//@Blog(個(gè)人博客地址): www.codersrc.com
//@File:C語言教程 - 函數(shù)聲明和調(diào)用
//@Time:2021/06/20 08:00
//@Motto:不積跬步無以至千里叹哭,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累!
/******************************************************************************************/
_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
函數(shù)的實(shí)現(xiàn)原理泳挥,你可以不用管沽瘦,你只需要明白如何傳遞參數(shù)即可革骨,這就是函數(shù)調(diào)用的過程;
二.函數(shù)聲明和定義
函數(shù)聲明只是一個(gè)空殼析恋,不會(huì)有具體的函數(shù)實(shí)現(xiàn)良哲,而定義要實(shí)現(xiàn)函數(shù)的實(shí)現(xiàn),例如:
1.函數(shù)聲明:不需要實(shí)現(xiàn)這個(gè)函數(shù)的功能
int sub(int x,int y); //只需要聲明即可助隧,不需要實(shí)現(xiàn)這個(gè)函數(shù)的功能
2.函數(shù)定義:必須實(shí)現(xiàn)這個(gè)函數(shù)的功能
int sub(int x,int y) 需要實(shí)現(xiàn)這個(gè)函數(shù)的功能
{
return (x-y);
}
三.函數(shù)調(diào)用
函數(shù)在調(diào)用之前必須聲明或者定義筑凫,否則會(huì)報(bào)錯(cuò):找不到標(biāo)識(shí)符,這也是為什么hello world
中調(diào)用 printf
函數(shù)必須要包含 stdio.h
頭文件的原因;
我們觀察如下代碼:
/******************************************************************************************/
//@Author:猿說編程
//@Blog(個(gè)人博客地址): www.codersrc.com
//@File:C語言教程 - 函數(shù)聲明和調(diào)用
//@Time:2021/06/20 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海漏健,程序人生的精彩需要堅(jiān)持不懈地積累嚎货!
/******************************************************************************************/
#include<stdio.h>
void main()
{
int ret = sub(2, 1); //函數(shù)調(diào)用
printf("ret:%d ", ret);
return ;
}
int sub(int x, int y) //函數(shù)定義
{
return (x - y);
}
編譯的時(shí)候報(bào)錯(cuò):
錯(cuò)誤 C3861 “sub”: 找不到標(biāo)識(shí)符
首先我們分析:程序首先進(jìn)入 main
函數(shù),然后調(diào)用 sub
函數(shù)蔫浆,此時(shí)在調(diào)用之前都找不到 sub
的聲明殖属,當(dāng)然不知道 sub
是個(gè)什么玩意!瓦盛!
解決辦法一:將函數(shù)定義在 main 前面洗显,示例代碼如下:
/******************************************************************************************/
//@Author:猿說編程
//@Blog(個(gè)人博客地址): www.codersrc.com
//@File:C語言教程 - 函數(shù)聲明和調(diào)用
//@Time:2021/06/20 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海原环,程序人生的精彩需要堅(jiān)持不懈地積累挠唆!
/******************************************************************************************/
#include<stdio.h>
int sub(int x, int y)//函數(shù)定義
{
return (x - y);
}
void main()
{
int ret = sub(2, 1);//函數(shù)調(diào)用
printf("ret:%d ", ret);
return ;
}
解決辦法二:講函數(shù)聲明在 main 函數(shù)前面,只要有了函數(shù)聲明嘱吗,函數(shù)不論是定義在 main
函數(shù)前面或者后面都無所謂玄组,示例代碼如下:
/******************************************************************************************/
//@Author:猿說編程
//@Blog(個(gè)人博客地址): www.codersrc.com
//@File:C語言教程 - 函數(shù)聲明和調(diào)用
//@Time:2021/06/20 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海谒麦,程序人生的精彩需要堅(jiān)持不懈地積累俄讹!
/******************************************************************************************/
#include<stdio.h>
//函數(shù)聲明
int sub(int x, int y);
void main()
{
int ret = sub(2, 1); //函數(shù)調(diào)用
printf("ret:%d ", ret);
return ;
}
//函數(shù)定義
int sub(int x, int y)
{
return (x - y);
}
四.函數(shù)形參和實(shí)參
形參是函數(shù)定義的時(shí)候用的,實(shí)參是調(diào)用函數(shù)的時(shí)候用的绕德,舉個(gè)例子:
/******************************************************************************************/
//@Author:猿說編程
//@Blog(個(gè)人博客地址): www.codersrc.com
//@File:C語言教程 - 函數(shù)聲明和調(diào)用
//@Time:2021/06/20 08:00
//@Motto:不積跬步無以至千里患膛,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累耻蛇!
/******************************************************************************************/
void fun(int a); /* 這里的a就是形參 */
int main()
{
int b = 1;
fun(b); /* b就是實(shí)參 */
}
五.猜你喜歡
- C語言邏輯運(yùn)算符
- C語言三目運(yùn)算符
- C語言逗號(hào)表達(dá)式
- C語言 sizeof 和 strlen 函數(shù)區(qū)別
- C語言 strcpy 和 strcpy_s 函數(shù)區(qū)別
- C語言 memcpy 和 memcpy_s 區(qū)別
- C語言 數(shù)組定義和使用
- C語言 數(shù)組遍歷
- C語言 數(shù)組下標(biāo)越界
- C語言 數(shù)組內(nèi)存溢出
- C語言 數(shù)組下標(biāo)越界和內(nèi)存溢出區(qū)別
- C語言 二維數(shù)組定義和使用
- C語言 二維數(shù)組行數(shù)和列數(shù)計(jì)算
- C語言 指針聲明和定義
- C語言 指針 p++ / p–
- C語言 p++/§++/_(p++)/_p++
- C語言 使用指針遍歷數(shù)組
- C語言 指針和數(shù)組區(qū)別
- C語言 數(shù)組指針
- C語言 指針數(shù)組
- C語言 指針數(shù)組和數(shù)組指針區(qū)別
- C語言 空指針 NULL
- C語言 void 指針
- C語言 野指針
- C語言 函數(shù)聲明和定義
- C語言 函數(shù)聲明和調(diào)用
未經(jīng)允許不得轉(zhuǎn)載:猿說編程 ? C語言 函數(shù)聲明和調(diào)用
本文由博客 - 猿說編程 猿說編程 發(fā)布踪蹬!