c語言基礎之函式
阿新 • • 發佈:2018-12-30
實參和形參
主調與被調函式間有資料傳遞關係,這就是有參函式。
在定義函式時,函式名後面括號中的變數名稱為“形式引數”,
在主調函式呼叫一個函式時,函式名後面括號中的引數(可以是表示式)稱為“實際引數”。
注意:發生呼叫時,呼叫函式把實參的值複製一份,傳送給被呼叫函式的形參,從而實現呼叫函式向被呼叫函式的資料傳送。
1. 形參呼叫時佔據記憶體,呼叫結束後所佔儲存單元被釋放
2. 實參可以是常量,變數,表示式,函式,但進行函式呼叫時必須具有確定的值.
3. 實參對形參的資料傳送是單向的。
4 .實參和形參佔用不同的記憶體單元,即使同名也互不影響
#include<stdio.h> void fun(int x)// x是形參,在呼叫前不佔記憶體 { printf("hello x = %d\n",x); } int main() { int x = 20; fun(x); //y是實參,記憶體中實際存在 }
/*函式的返回值通過return語句來獲取,當不需要函式返回值時,可省去return語句
return語句的後面可以是變數,也可以是表示式:如 return(a > b)*/
#include<stdio.h>
int fun(int x,int y)//不需要返回值用void
{
return(x + y);
}
int main()
{
int sum = fun(10,20);//型別必須一樣,int型別的函式需定義一個int型別的變數來接受
printf("sum = %d\n",sum);
return 0;
}
函式宣告和定義
函式宣告的作用是把函式名,函式引數的個數和引數型別等資訊告訴編譯器,以便在呼叫時,編譯系統能正確識別並檢查呼叫是否合法
格式 : 函式型別 函式名 (引數型別1,引數型別2,···引數型別n);
當一個函式在定義之前被呼叫,編譯系統會在函式呼叫處停止並報錯,函式宣告可以使編譯器“忽略”這個錯誤,繼續下面的程式碼
#include<stdio.h> double fun(double x,double y);//宣告有fun這個函式 int main() { double sum = fun(1.2,1.3);//呼叫這個函式 //不管裡面有沒有引數都要用(),如fun(); printf("sum = %.2f\n",sum); printf("%d",fun(1.2,1.3)); //兩種輸出語句一樣 return 0; } double fun(double x,double y) { return (x + y); }//定義這個函式
2018.7.24
函式的巢狀
函式不允許巢狀定義,但允許巢狀呼叫 。*/
#include<stdio.h>
int unfun(int y)
{
printf("i am unfun y = %d\n", y+1);
return 0;
}
int fun(int x)
{
unfun(x);//呼叫unfun
printf("i am fun x = %d\n",x);
return 0;
}
int main()
{
fun(20);//呼叫fun
return 0;
}
函式遞迴
//計算5的階乘
#include<stdio.h>
int fac(int n)
{
int t;
if(1==n||0==n)
return 1;
else
{
t = n*fac(n-1);
return t;//返回所需要的值。
}
}
int main()
{
int f = fac(5);//太大的值會超過int儲存範圍
printf("jc= %d \n",f);
return 0;
}
2018.7.25