C語(yǔ)言淺析函數(shù)的用法
問(wèn)題引入
有時(shí)候,我們經(jīng)常需要在一個(gè)程序中,對(duì)一個(gè)數(shù)組進(jìn)行
鍵盤(pán)輸入,打印數(shù)組元素值。
有些代碼塊,功能是相同的,只有數(shù)組名和元素個(gè)數(shù)等參數(shù)不一樣,
代碼形式是一樣的,對(duì)于同一功能而不同參數(shù)的代碼塊,那么咱就可以
將其封裝成一個(gè)函數(shù),如果您需要用到這樣的功能或者代碼塊,那么我們
就不需要重復(fù)的去寫(xiě)代碼塊,我們只需要調(diào)用這個(gè)函數(shù)。
函數(shù)
- 函數(shù)是完成某個(gè)功能的指令序列的封裝。
- 函數(shù)有什么特點(diǎn):
- 相同功能的代碼塊,重復(fù)利用、模塊化思想。
C語(yǔ)言中函數(shù)的語(yǔ)法形式
函數(shù)返回值類(lèi)型 函數(shù)名(輸入?yún)?shù)列表) --> 函數(shù)頭
{
函數(shù)的具體實(shí)現(xiàn) --> 函數(shù)體
}
“函數(shù)返回值類(lèi)型”:
函數(shù)最終返回的結(jié)果的類(lèi)型。
“單值類(lèi)型” : 結(jié)果用一個(gè)寄存器或兩個(gè)寄存器可以保存的值。
int / long
void : 表示該函數(shù)無(wú)返回值。(void不可以省略)
問(wèn)題
return語(yǔ)句后面的那個(gè)表達(dá)式的值,就是函數(shù)調(diào)用表達(dá)式的值。
但是有些函數(shù)并沒(méi)有返回值,難道說(shuō)這個(gè)函數(shù)調(diào)用表達(dá)式的值沒(méi)有值嗎?
函數(shù)調(diào)用表達(dá)式任然會(huì)有一個(gè)值,只不過(guò)我們不知道這個(gè)值時(shí)多少,R0中
一定會(huì)有一個(gè)確定的值(undefine,未知)
例子
void print_array(int a[], int n) { int i; for(i = 0 ; i < n ; i++) { printf("%d ", a[i]); } printf("\n"); //return ; }
“函數(shù)名” : C語(yǔ)言中標(biāo)識(shí)符的規(guī)定。
array_sum
Shuzu_he
“輸入?yún)?shù)列表” : 規(guī)定輸入?yún)?shù)必須要有 類(lèi)型 參數(shù)名 ,
參數(shù)與參數(shù)之間用 ',' 隔開(kāi)
類(lèi)型1 參數(shù)名1 , 類(lèi)型2 參數(shù)名2 , .......
void : 表示該函數(shù)不帶參數(shù)。(void可以省略)
return語(yǔ)句 :
return 返回的意思。return只能用在函數(shù)內(nèi)部。
表示函數(shù)結(jié)束的意思。
return ; 函數(shù)結(jié)束,不帶任何返回值。
在函數(shù)的返回值類(lèi)型為void的時(shí),可能需要用到上述語(yǔ)句。 return 表達(dá)式 ; 函數(shù)結(jié)束,并且?guī)б粋€(gè)返回值,“表達(dá)式”的值。
函數(shù)的返回值類(lèi)型,就是return 語(yǔ)句后面的“表達(dá)式”的值的類(lèi)型。
函數(shù)的調(diào)用過(guò)程
函數(shù)調(diào)用: 調(diào)用一個(gè)已經(jīng)實(shí)現(xiàn)了的 函數(shù)去執(zhí)行函數(shù)中封裝的指令序列。
a: 需要指定是哪個(gè)函數(shù)/任務(wù) ,指定任務(wù)名/函數(shù)名
b: 完成該任務(wù)/函數(shù) 需要有哪些實(shí)際上的參數(shù)(實(shí)際參數(shù))
實(shí)際參數(shù)(實(shí)參): 調(diào)用該函數(shù)式傳入的參數(shù)。
形式參數(shù)(形參): 定義或設(shè)計(jì)該函數(shù)時(shí)的參數(shù)。
參數(shù)的傳遞,是將 形參 = 實(shí)參的值??!
“實(shí)參” : 就是一個(gè)表達(dá)式
指定實(shí)參時(shí),不需要指定實(shí)參的類(lèi)型。
實(shí)參需要與形參一一對(duì)應(yīng)(不僅僅實(shí)參與形參的個(gè)數(shù)對(duì)應(yīng),
并且實(shí)參與形參的類(lèi)型也要相對(duì)應(yīng))!!!
例:
int main() { int a[10]; input_array(a , 10);//調(diào)用函數(shù) int s = sum(5 , 6); printf("s == %d\n", s); }
函數(shù)的調(diào)用過(guò)程 a、把實(shí)參的值 賦值給 相對(duì)應(yīng)的形參
b、跳轉(zhuǎn)到函數(shù)中去執(zhí)行函數(shù)中的指令序列。
直到遇到 return語(yǔ)句 或者 函數(shù)語(yǔ)句全部執(zhí)行完畢。
return 后面的表達(dá)式的值,將作為整個(gè)函數(shù)調(diào)用表達(dá)式的值。
當(dāng)函數(shù)執(zhí)行完畢,那么此時(shí)CPU會(huì)回到函數(shù)調(diào)用處,
繼續(xù)往下面運(yùn)行。
函數(shù)聲明
就是告訴編譯器 這個(gè)“名字(標(biāo)識(shí)符)”是一個(gè)函數(shù)名,
在后面的某個(gè)位置會(huì)定義的。
函數(shù)聲明:
void input_array(int arr[], int n) ; //函數(shù)頭
外部的函數(shù)聲明:
extern 外部函數(shù)的頭部;
本文件中的函數(shù)的聲明:
函數(shù)頭部分 ;
變量聲明
外部的全局變量的聲明 :
extern 變量的類(lèi)型 變量;
例子: 假設(shè)你想要在1.c中去使用2.c中的那個(gè)變量
2.c 1.c
//對(duì)2.c中變量a進(jìn)行外部聲明
extern int a;
int a = 250; printf("2.c => a ==%d\n", a);
數(shù)組聲明
int a[3][4];
數(shù)組的聲明與普通變量的聲明類(lèi)似!!!
到此這篇關(guān)于C語(yǔ)言淺析函數(shù)的用法的文章就介紹到這了,更多相關(guān)C語(yǔ)言函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Matlab實(shí)現(xiàn)灰色預(yù)測(cè)的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Matlab實(shí)現(xiàn)灰色預(yù)測(cè),文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以了解一下2022-05-05c++基礎(chǔ)語(yǔ)法:構(gòu)造函數(shù)與析構(gòu)函數(shù)
構(gòu)造函數(shù)用來(lái)構(gòu)造一個(gè)對(duì)象,主要完成一些初始化工作,如果類(lèi)中不提供構(gòu)造函數(shù),編譯器會(huì)默認(rèn)的提供一個(gè)默認(rèn)構(gòu)造函數(shù)(參數(shù)為空的構(gòu)造函數(shù)就是默認(rèn)構(gòu)造函數(shù)) ;析構(gòu)函數(shù)是隱式調(diào)用的,delete對(duì)象時(shí)候會(huì)自動(dòng)調(diào)用完成對(duì)象的清理工作2013-09-09基于VC 6.0使用C語(yǔ)言實(shí)現(xiàn)俄羅斯方塊
這篇文章主要為大家詳細(xì)介紹了基于VC 6.0使用C語(yǔ)言實(shí)現(xiàn)俄羅斯方塊,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06QT使用QComBox和QLineEdit實(shí)現(xiàn)模糊查詢(xún)功能
模糊查詢(xún)是指根據(jù)用戶(hù)輸入的文本,在下拉框的選項(xiàng)中進(jìn)行模糊匹配,并動(dòng)態(tài)地顯示匹配的選項(xiàng),本文將使用QComBox和QLineEdit實(shí)現(xiàn)模糊查詢(xún)功能,需要的可以參考下2023-11-11基于errno返回值的對(duì)應(yīng)錯(cuò)誤碼的詳細(xì)介紹
本篇文章是對(duì)errno返回值的對(duì)應(yīng)錯(cuò)誤碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C++?構(gòu)造函數(shù)學(xué)習(xí)筆記
這篇文章主要為大家介紹了C++?構(gòu)造函數(shù)學(xué)習(xí)筆記,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10c++11中regex正則表達(dá)式示例簡(jiǎn)述
這篇文章主要給大家介紹了關(guān)于c++11中regex正則表達(dá)式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用c++11具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11