定義函數
成都創(chuàng)新互聯公司是一家專業(yè)從事網站制作、成都做網站的網絡公司。作為專業(yè)的建站公司,成都創(chuàng)新互聯公司依托的技術實力、以及多年的網站運營經驗,為您提供專業(yè)的成都網站建設、營銷型網站建設及網站設計開發(fā)服務!
C 語言中的函數定義的一般形式如下:
return_type function_name( parameter list )
{
body of the function
}
在 C 語言中,函數由一個函數頭和一個函數主體組成。下面列出一個函數的所有組成部分:
返回類型:一個函數可以返回一個值。return_type 是函數返回的值的數據類型。有些函數執(zhí)行所需的操作而不返回值,在這種情況下,return_type 是關鍵字 void。
函數名稱:這是函數的實際名稱。函數名和參數列表一起構成了函數簽名。
參數:參數就像是占位符。當函數被調用時,您向參數傳遞一個值,這個值被稱為實際參數。參數列表包括函數參數的類型、順序、數量。參數是可選的,也就是說,函數可能不包含參數。
函數主體:函數主體包含一組定義函數執(zhí)行任務的語句。
因為函數jiec()是你自己定義并編輯的,在C語言中凡是操作員自己定義的函數都要在使用前申明,在C語言中系統自帶的函數是通過include語句進行引用定義的,比如字符函數通過includestring.h進行申明,即你要引用的字符函數都在string.h里定義了
假設主函數main()。其他函數void fun(int a,int *b)。
關于函數定義和聲明:
在代碼中fun函數,有完整函數體的代碼就是函數定義部分,比如void fun(int a,int *b){。。。};。
如果沒有具體實現的函數體代碼(也就是大括號內容),那么就是函數聲明。比如void fun(int ,int *);
關于函數聲明和調用:
如果fun函數定義在main代碼上面。比如:
void fun(int a,int *b){。。。};
int main(){
int a=0,int b=0;
......
fun(a,b);//這里fun定義代碼在main上面,所以可以不需要聲明。反之需要先寫聲明語句
return 0;
}
關于函數局部變量及全局變量:
簡單區(qū)分:
定義在函數之外的就是全局變量,這個變量所有函數都可以直接使用,并且共用同一個地址。任意函數修改了變量值,其他函數調用也會變。
定義在函數之內的就是局部變量,局部變量只屬于該函數,其他函數即使定義了同樣名字的變量,這兩個變量也不同地址,互不相干。
比如:
int a;//這就是全局變量,作用域下所有函數共用
int main()
{
int b;//這就是局部變量,只在本函數有效,如果想在調用fun函數時讓fun也使用該變量,需要把這個變量的地址作為參數傳遞過去。
printf("%d",b);
return 0;
}
注意:c語言中允許局部變量和全局變量同名,但是同名的局部變量會屏蔽全局變量,實際代碼避免同名。
關于函數傳值和傳址:
如函數void fun(int a,int *b){..........};這里形參a 和*b,分別表示一個值和一個地址
所以在調用該函數時,比如:
int main()
{
int c,d;
fun(c,d);//這里調用就對應上面形參類型,第一個參數傳遞了c的值(傳值),第二個參數傳遞了d的地址(傳址),這里c和d,叫做實參。當fun函數運行時改變了a和b指向地址的值,對應main函數中c的值不變,d的值改變。
return 0;
}
順帶一說:局部變量,在函數運行結束后會自動釋放,所以想把局部變量地址作為返回值,需要用malloc函數申請。(這里看不懂可以暫時忽視)
什么是聲明:有兩重含義,如下:
第一重含義:告訴編譯器,這個名字已經匹配到一塊內存上了(伊人已嫁,吾將何去何
從?何以解憂,唯有稀粥),下面的代碼用到變量或對象是在別的地方定義的.聲明可以出
現多次.
第二重含義:告訴編譯器,我這個名字我先預定了,別的地方再也不能用它來作為變量
名或對象名.比如你在圖書館自習室的某個座位上放了一本書,表明這個座位已經有人預
訂,別人再也不允許使用這個座位.其實這個時候你本人并沒有坐在這個座位上.這種聲
明最典型的例子就是函數參數的聲明,例如:
void fun(int i, char c);好,這樣一解釋,我們可以很清楚的判斷:a)是定義;b)是聲明.