一、 函數是什麼?
1.任何一個C語言程序都是由一個或者多個程序段(小程序)構成的,每個程序段都有自己的功能,我們一般稱這些程序段爲“函數”。
所以,你可以說C語言程序是由函數構成的
2.函數就是功能。每一個函數用來實現一個特定的功能。起函數的名字時候應反映其代表的功能
3.函數形式分三種:空函數,無參函數,有參函數
二、 函數有什麼用?
1.避免主函數變得龐雜,頭緒不清,方便閱讀和維護程序
2.避免一個功能多次編寫代碼
三、 函數怎麼用?
1.定義函數應該包括的內容
1)指定函數的名字,以便以後按名調用
2)指定函數的類型,即函數返回值的類型
3)指定函數的參數的名字和類型,以便在調用函數時向它們傳遞數據。對無參函數不需要這項
4)指定函數應當完成什麼操作,也就是函數時做什麼的,即函數的功能。這是最重要的,是在函數體重解決的
2.定義函數的方法
1)無參函數
類型名 函數名()
{
函數體
}
2)有參函數
類型名 函數名(形式參數列表)
{
函數體
}
3)空函數
類型名 函數名()
{
}
四、 使用函數要注意什麼?
1.一個源文件程序由一個或多個函數以及其他有關內容(如指令,數據聲明與定義等)組成
2.C程序的執行是從main函數開始的,如果在main函數中調用其他函數,在調用後流程返回到main函數,在main函數中結束整個程序的運行
3.所有函數都是平行的,即在定義函數時時分別進行的,是互相獨立的。一個函數並不從屬於另一個,即函數不能嵌套定義的
4.庫函數,它是由系統提供的,用戶不必自己定義,可直接使用它們
5.用戶自己定義的函數。它是用以解決用戶專門需要的函數
五、 函數代碼舉例
#include<stdio.h>
int max(int x,int y)
{
int z;
z=x>y?x:y;
return z;
}
int main()
{
int max(int x,int y);
int a,b,c;
printf("請輸入兩個整數:");
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("最大的數是 %d",c);
return 0;
}
#include<stdio.h>
int main()
{
int max4(int a,int b,int c,int d);
int a,b,c,d,max;
printf("請輸入四個整數 :\n");
scanf("%d%d%d%d",&a,&b,&c,&d);
max=max4(a,b,c,d);
printf("最大的數是 :%d\n",max);
return 0;
}
int max4(int a,int b,int c,int d)
{
int max2(int a,int b);
int m;
m=max2(a,b);
m=max2(m,c);
m=max2(m,d);
return m ;
}
int max2(int a,int b)
{
if(a>=b)
return a ;
else
return b ;
}
int main()
{
int s,d;
printf("請輸入一個整數: ");
scanf("%d",&s);
while(s<0)
{
printf("您輸入的數字有誤,請重新輸入: ");
scanf("%d",&s);
}
if(s>=0)
{
int add(int n);
d=add(s);
printf("連乘積是: %d\n",d);
}
return 0;
}
int add(int n)
{
int sum=1;
if(n==1) sum=1;
if(n>1)
sum=add(n-1)*n;/*這兒的add(n-1)就是要逐步地往n-1==1這個放向去發展的,也就是最後n-1必定是要等於1滴 */
return sum;
}
六、 函數總結
1.形參:是在函數括號裏定義的 實參:是傳來的值
2.形參和實參間的數據傳 。在調用函數過程中,系統會把實參的值傳遞給被調用函數的形參。
或者說,形參從實參得到一個值。該值在函數調用期間有效,可以參加該函數的運算
3.函數定義:無分號,有函數體 函數聲明:有分號,沒函數體
4.實參可以是常量、變量或表達式。實參與形參的類型應相同或者複製兼容
在發生函數調用時,函數的形參被臨時分配內存單元,和實參的內存單元不同。因爲值內存單元不同,所有形參值的改變不會影響到實參值
6.函數的首行稱爲函數原型
7.函數聲明中形參名可以省寫,而只寫形參的類型
8.如果已在文件的開頭(在所有函數之前),已對本文件中所調用的函數進行了聲明,則在各函數中不必對其所調用的函數再作聲明
9.函數不可以嵌套定義,但可以嵌套調用
10.在調用一個函數的過程中又出現直接或間接地調用該函數本身,稱爲函數的遞歸調用。這是C語言的一大特點
11.一個遞歸的問題可以分“回溯”和“遞推”兩個階段